1

我的应用程序中有一些活动。在主要活动中,我定义了唤醒锁:

PowerManager powerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock");

onPause()并在方法中发布它。我的问题是,它在整个应用程序中都处于活动状态吗?或者我是否需要在我拥有的每个活动中复制/粘贴它?

谢谢

4

1 回答 1

5

只要获取了 WakeLock,就会持有很长时间的唤醒锁。相关的是您的 WakeLock 对象的生命周期。如果不再使用 WakeLock 并且它在仍然有锁的情况下被 GC 处理,它会在垃圾回收期间被释放(在 finalize() 方法中)。

所以你的唤醒锁在acquire()和release()之间是活跃的。您必须确保您的代码在需要时从所需活动中调用这些函数。

如果您希望在应用程序中全局使用 WakeLock,请扩展 android.app.Application,在清单中指定它,并在应用程序级别管理唤醒锁。

于 2011-09-13T11:32:58.227 回答