过度局部唤醒锁定(Beta 版)

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

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

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

提供反馈

检测问题

Android Vitals 可以帮助您了解应用使用部分唤醒锁定的次数是否过多。

Android Vitals

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

如果所有部分唤醒锁定加起来在 24 小时内运行的时长超过 3 小时,Android Vitals 会报告部分唤醒锁定使用情况过多

只有当应用在后台运行没有前台服务时,Android Vitals 才会跟踪时间。

在部分唤醒锁定对用户有明显益处且没有更好的方式在不使用部分唤醒锁定的情况下实现该结果的情况下,Android Vitals 会对部分唤醒锁定的使用情况给予一些豁免。在这些情况下,Android Vitals 可能不会将部分唤醒锁定时长计入 3 小时的限制。例如,如果应用正在为用户播放音频,则保持设备唤醒状态有明显的好处,并且如果不保持设备唤醒状态,则无法播放音频。在这种情况下,部分唤醒锁定时间不会计入 Android Vitals。

如果在 28 天内,所有设备上的应用会话中超过 5% 的会话出现过度部分唤醒锁定,那么当该指标正式发布后,可能会影响应用在 Play 上的曝光度。

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

解决问题

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

如果确实需要使用唤醒锁定,请遵循唤醒锁定最佳实践,确保唤醒锁定不会降低设备效率。特别是,请确保释放您获取的每部设备,并尽快释放锁定。

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

另请参阅