部分唤醒锁是 PowerManager
API 中的一种机制,可让开发者在设备显示屏关闭(无论是由于系统超时还是用户按下电源按钮)后保持 CPU 运行。您的应用通过调用 acquire()
并设置 PARTIAL_WAKE_LOCK
标志,或使用其他获取唤醒锁的 API 来获取部分唤醒锁。过度使用部分唤醒锁会耗尽设备的电池电量,因为它会阻止设备进入低功耗状态。部分唤醒锁应仅在必要时使用,并在不再需要时立即释放。
如果您的应用过度使用部分唤醒锁,您可以使用本页面中的指南来诊断和解决问题。
您的反馈对于改进我们的文档至关重要。请使用以下链接向我们提供反馈
检测问题
Android Vitals 可以帮助您了解何时应用对部分唤醒锁的使用过度。
Android Vitals
当应用过度使用部分唤醒锁时,Android Vitals 会通过 Play 管理中心发出提醒,帮助您提升应用性能。
当所有部分唤醒锁的总时长在 24 小时内达到或超过 3 小时时,Android Vitals 会将部分唤醒锁的使用报告为过度。
Android Vitals 仅当唤醒锁在应用处于后台且没有前台服务时才跟踪时间。
在某些情况下,Android Vitals 会豁免部分唤醒锁的使用,即部分唤醒锁具有明确的用户利益,并且没有更好的方法可以在不使用部分唤醒锁的情况下实现该结果。在这些情况下,Android Vitals 可能不会将部分唤醒锁时间计入 3 小时限制。例如,如果应用正在为用户播放音频,那么保持设备唤醒具有明确的益处,并且没有办法在不保持设备唤醒的情况下播放音频。在这种情况下,部分唤醒锁时间不会计入 Android Vitals。
如果在 28 天内,所有设备上超过 5% 的应用会话中出现部分唤醒锁使用过度的情况,则一旦该指标退出 Beta 版,它可能会影响您的应用在 Play 上的可见性。
一旦您发现应用存在部分唤醒锁使用过度的问题,下一步就是解决该问题。
解决问题
由于唤醒锁会耗尽设备电池,因此如果存在替代方案,则不应使用唤醒锁。选择合适的 API 来保持设备唤醒文档可以帮助您找到适用于您的应用的最佳解决方案。
如果您确实需要使用唤醒锁,请遵循唤醒锁最佳实践,以确保您的唤醒锁不会损害设备效率。特别是,请确保您获取的每个唤醒锁都已释放,并尽快释放该锁。
修复代码中的问题后,您可以使用本地唤醒锁调试工具来验证您的修复。
另请参阅
为您推荐
- 注意:禁用 JavaScript 时显示链接文本
- 冻结帧
- 在持续集成中运行基准测试
- 不使用 Macrobenchmark 创建和测量基线配置文件