Android:什么时候需要WakeLock?

时间:2015-07-22 16:26:47

标签: android

如果我的IntentService仅更新SharedPreference,是否需要(部分)WakeLock

我知道WakeLock CPU 保持清醒,但是什么时候需要?

2 个答案:

答案 0 :(得分:2)

如果在设备进入休眠状态之前需要保持CPU运行以完成某些工作,则可以使用名为唤醒锁的PowerManager系统服务功能。唤醒锁允许您的应用程序控制主机设备的电源状态。

创建和保持唤醒锁定会对主机设备的电池寿命产生巨大影响。因此,只有在严格必要时才应使用唤醒锁,并尽可能短地保持它们。例如,您永远不需要在活动中使用唤醒锁定。

使用唤醒锁定的一个合法案例可能是后台服务需要获取唤醒锁定以保持CPU在屏幕关闭时运行。但是,再次,这种做法应该最小化,因为它会影响电池寿命。

不幸的是,一些编码不良,恶意或者只是错误的应用程序可能会产生异常数量的不良唤醒锁。其他应用程序需要持续的Internet访问才能以正常方式运行 - Facebook和Messenger可能是最受欢迎的代表。他们坚持要求网上的信息(所谓的“新事件的民意调查”),这会导致后续的唤醒锁。

在其他情况下,对给定应用程序的更新也可能导致某些问题,这通常会导致部分唤醒锁定。后者会让你的CPU在后台不停地嗡嗡作响,有时候在你不知情的情况下,并阻止你的设备“进入睡眠状态”。这是异常电池耗尽的一个非常重要的先决条件。因此,建议您定期监控设备上的唤醒锁,并查看哪些应用对我们系统的资源造成严重影响。

阅读更多内容:

What-are-wakelocks-how-they-affect-the-battery-life-of-your-Android-device-and-how-to-Greenify

参考:https://developer.android.com/training/scheduling/wakelock.html

答案 1 :(得分:0)

例如,当用户锁定屏幕时,您不希望CPU进入睡眠状态。

如果您的IntentService没有获得WakeLock,如果用户锁定屏幕,它将在一段时间后暂停,并且当用户唤醒设备时它将继续工作。获得WakeLock即使屏幕被锁定,您的服务也会正常工作。

正如@My上帝提到的那样,它会对电池寿命产生很大的影响,所以,只有当你真的需要完成一些操作时才使用它,你不能等到用户唤醒设备。