Android:什么时候需要WakeLock?

标签 android

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

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

最佳答案

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

创建和保持唤醒锁会对主机设备的电池生命周期产生巨大影响。因此,您应该仅在绝对必要时才使用唤醒锁,并尽可能短地保留它们。例如,您永远不需要在 Activity 中使用唤醒锁。

使用唤醒锁的一个合法案例可能是后台服务需要获取唤醒锁以在屏幕关闭时保持 CPU 运行以完成工作。不过,由于这种做法会影响电池生命周期,因此应尽量减少这种做法。

不幸的是,一些编码不良、恶意或仅仅是错误的应用程序可能会产生异常数量的不需要的唤醒锁。其他应用程序需要持续访问互联网才能以正常方式运行——Facebook 和 Messenger 可能是最受欢迎的代表。他们持续从 Web 请求信息(所谓的“轮询”新事件),这会导致后续的唤醒锁。

在其他情况下,对给定应用程序的更新也可能导致某些问题,这通常会导致部分唤醒锁。后者让你的 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

关于Android:什么时候需要WakeLock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31568830/

相关文章:

android - 使用 Android 导航组件拦截返回导航

android - 具有嵌套 ListView 滚动的线性布局

android - 如何在android中接收短信?

Android - 在没有开发人员选项的情况下使用 ADB

从 Play 商店安装时,Android cordova 应用程序崩溃

android - 如何重新定位 MediaController?

java - 如何向 Android 应用程序添加操作栏?

android - 如何设置 TextView 以在剩余可用空间中将文本居中?

android - build.gradle 和项目库

android - 我应该使用 J Center 的 Guava-base-libraries 还是有其他地方可以获得模块化的 Guava-jars?