部分唤醒锁定是 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 的情况下创建和衡量基准配置文件