部分唤醒锁是 PowerManager
API 中的一种机制,它允许开发者在设备显示屏关闭(无论是由于系统超时还是用户按下电源按钮)后保持 CPU 运行。您的应用可以通过调用带有 PARTIAL_WAKE_LOCK
标志的 acquire()
方法,或使用其他获取唤醒锁的 API 来获取部分唤醒锁。如果部分唤醒锁在您的应用于后台运行时(用户看不到您应用的任何部分)长时间保持,则会变为持续占用。这种情况会耗尽设备的电池电量,因为它会阻止设备进入低功耗状态。部分唤醒锁应仅在必要时使用,并在不再需要时立即释放。
如果您的应用存在持续占用的部分唤醒锁,您可以使用本页面中的指南来诊断并修复此问题。
检测问题
您可能并非总是知道您应用的部分唤醒锁是否持续占用。如果您已发布应用,Android Vitals 可以帮助您了解此问题。
Android Vitals
当您的应用出现持续占用的部分唤醒锁时,Android Vitals 可以通过 Play 管理中心向您发出提醒,从而帮助提升您应用的性能。当应用在 24 小时内至少出现一次持续一小时的后台部分唤醒锁时,Android Vitals 会将其报告为持续占用。
显示的电池会话数量是应用所有受衡量用户的汇总数据。如需了解 Google Play 如何收集 Android Vitals 数据,请参阅 Play 管理中心文档。
一旦您了解到您的应用存在持续占用的部分唤醒锁,下一步就是解决该问题。
解决问题
由于唤醒锁会耗尽设备电池,因此如果存在替代方案,则不应使用唤醒锁。有关选择合适的 API 以保持设备唤醒的文档可以帮助您为应用找到最佳解决方案。
如果您确实需要使用唤醒锁,请遵循唤醒锁最佳实践,以确保您的唤醒锁不会损害设备效率。特别是,请确保您获取的每个唤醒锁都已释放,并尽快释放该锁。
在代码中修复问题后,您可以使用本地唤醒锁调试工具来验证您的修复。
另请参阅
为您推荐
- 注意:当 JavaScript 关闭时,会显示链接文本
- 冻结帧
- 在持续集成中运行基准测试
- 在不使用 Macrobenchmark 的情况下创建和衡量基线配置文件