过度局部唤醒锁定

部分唤醒锁定是 PowerManager API 中的一种机制,可让开发者在设备的显示屏关闭后(无论是由于系统超时还是用户按下电源按钮)继续保持 CPU 运行。您的应用会通过调用带有 PARTIAL_WAKE_LOCK 标志的 acquire() 来获取部分唤醒锁定,或者通过使用其他可获取唤醒锁定的 API 来获取部分唤醒锁定。过度使用部分唤醒锁定会耗尽设备的电量,因为它会阻止设备进入低功耗状态。部分唤醒锁定仅应在必要时使用,并且在不再需要时立即释放。

如果您的应用过度使用部分唤醒锁定,您可以使用本页中的指南来诊断和解决问题。

您的反馈对于改进我们的文档至关重要。请使用以下链接向我们提供反馈:

提供反馈

检测问题

Android Vitals 可帮助您了解应用何时过度使用部分唤醒锁定。

Android Vitals

当您的应用过度使用部分唤醒锁定时,Android Vitals 可通过 Play 管理中心提醒您,从而帮助您改进应用性能。

如果所有部分唤醒锁定的总运行时间在 24 小时内达到 2 小时或更长时间,Android Vitals 会报告部分唤醒锁定使用情况为过高。只有当应用在后台或运行前台服务时持有唤醒锁定时,Android Vitals 才会跟踪唤醒锁定时长。目前,Android Vitals 会将由 audiolocationJobScheduler 用户启动的 API 创建的唤醒锁从唤醒锁计算中排除。

Android Vitals“部分唤醒锁定操作过多”信息中心会细分与您的应用相关联的非豁免唤醒锁定名称,并显示受影响的会话和持续时间。

如果所有设备在 28 天内超过 5% 的应用会话中出现过多的部分唤醒锁定,则在相应指标退出 Beta 版后,这可能会影响应用在 Play 上的曝光度。

当您发现应用存在过多的部分唤醒锁定时,下一步就是解决问题。

解决问题

由于唤醒锁定会耗尽设备电池电量,因此如果有替代方案,您就不应使用唤醒锁定。选择合适的 API 以保持设备唤醒状态文档可帮助您为应用找到最佳解决方案。

如果确实需要使用唤醒锁定,请遵循唤醒锁定最佳实践,确保唤醒锁定不会影响设备效率。特别是,请确保您获取的每个设备都会被释放,并尽可能快地释放锁定。

即使您未明确获取唤醒锁定,您的应用也可能正在使用唤醒锁定。 如果您发现唤醒锁定归因于您不认识的应用,识别由其他 API 创建的唤醒锁定有助于您识别可能创建了这些唤醒锁定的 API。

修复代码中的问题后,您可以使用本地唤醒锁定调试工具验证修复效果。

另请参阅