部分唤醒锁定是 PowerManager API 中的一种机制,开发者可利用它在设备的显示屏关闭后(无论是系统超时还是用户按下电源按钮导致)使 CPU 继续保持运行状态。您的应用会通过调用带有 PARTIAL_WAKE_LOCK 标志的 acquire(),或者使用可获取唤醒锁定的其他 API 来获取部分唤醒锁定。
当应用在后台运行(应用无任何部分对用户可见)时,如果长时间持有部分唤醒锁定,该唤醒锁定就会出现卡住现象。这种情况会导致设备电量消耗过快,因为它会阻止设备进入低功耗状态。部分唤醒锁定仅应在必要时使用,并且在不再需要时立即释放。
如果应用的部分唤醒锁定被卡住,您可以使用本页中的指南来诊断和解决问题。
检测问题
您有时可能并不知道应用的部分唤醒锁定卡住了。如果应用已发布,Android Vitals 可以帮助您发现此问题。
Android Vitals
当您的应用出现部分唤醒锁定卡住现象时,Android Vitals 可通过 Play 管理中心提醒您,从而帮助您改进应用性能。如果应用在 24 小时内出现至少一次后台持有部分唤醒锁定达 1 小时的情况,Android Vitals 即判定该部分唤醒锁定为卡住状态并加以报告。
显示的电池工作时段数量是应用的所有受测用户的汇总值。如需了解 Google Play 如何收集 Android Vitals 数据,请参阅 Play 管理中心文档。
一旦发现应用存在部分唤醒锁定卡住问题,下一步就是着手解决该问题。
解决问题
由于唤醒锁定会消耗设备电池电量,因此如果有替代方案,请勿使用唤醒锁定。选择合适的 API 以保持设备唤醒状态文档可帮助您为应用找到最佳解决方案。
如果确实需要使用唤醒锁定,请遵循唤醒锁定最佳实践,确保唤醒锁定不会影响设备效率。尤其需要注意的是,务必确保所有已获取的唤醒锁定均已释放,且释放操作要越快越好。
修复代码中的问题后,您可以使用本地唤醒锁定调试工具验证修复效果。
另请参阅
为您推荐
- 注意:当 JavaScript 处于关闭状态时,系统会显示链接文字
- 冻结的帧
- 在持续集成环境中运行基准测试
- 在不使用 Macrobenchmark 的情况下创建和衡量基准配置文件