部分唤醒锁定是 PowerManager API 中的一种机制,可让开发者在设备的显示屏关闭后(无论是由于系统超时还是用户按下电源按钮)继续保持 CPU 运行。您的应用会通过调用带有 PARTIAL_WAKE_LOCK 标志的 acquire(),或者使用可获取唤醒锁定的其他 API 来获取部分唤醒锁定。
过度使用部分唤醒锁定会耗尽设备的电量,因为它会阻止设备进入低功耗状态。部分唤醒锁定仅应在必要时使用,并且在不再需要时立即释放。
如果您的应用过度使用部分唤醒锁定,您可以使用本页中的指南来诊断和解决问题。
检测问题
Android Vitals 可帮助您了解应用何时过度使用部分唤醒锁定。
Android Vitals
当您的应用过度使用部分唤醒锁定时,Android Vitals 可通过 Play 管理中心提醒您,从而帮助您改进应用性能。
如果所有部分唤醒锁定的总运行时间在 24 小时内达到或超过 2 小时,Android Vitals 会报告部分唤醒锁定使用情况为过高。只有当应用在后台或运行前台服务时持有唤醒锁,Android Vitals 才会跟踪唤醒锁时长。目前,Android Vitals 会在计算唤醒锁时排除由 audio、location 和 JobScheduler 用户启动的 API 创建的唤醒锁。
Android Vitals“部分唤醒锁定操作过多”信息中心会细分与您的应用相关联的非豁免唤醒锁定名称,并显示受影响的会话和时长。
如果 28 天内,超过 5% 的应用会话在所有设备上出现过多的部分唤醒锁定,则该指标退出 Beta 版后,可能会影响应用在 Play 上的曝光度。
当您发现应用存在过多的部分唤醒锁定时,下一步就是解决问题。
解决问题
由于唤醒锁定会消耗设备电池电量,因此如果有替代方案,请勿使用唤醒锁定。选择合适的 API 以保持设备唤醒状态文档可帮助您为应用找到最佳解决方案。
如果确实需要使用唤醒锁定,请遵循唤醒锁定最佳实践,确保唤醒锁定不会影响设备效率。尤其需要注意的是,务必确保所有已获取的唤醒锁定均已释放,且释放操作要越快越好。
即使您没有明确获取唤醒锁定,您的应用也可能正在使用唤醒锁定。 如果您发现唤醒锁定归因于您不认识的应用,识别由其他 API 创建的唤醒锁定有助于您识别可能创建了这些唤醒锁定的 API。
修复代码中的问题后,您可以使用本地唤醒锁定调试工具验证修复效果。
另请参阅
为您推荐
- 注意:当 JavaScript 处于关闭状态时,系统会显示链接文字
- 冻结的帧
- 在持续集成环境中运行基准测试
- 在不使用 Macrobenchmark 的情况下创建和衡量基准配置文件