唤醒是 set() 方法。当唤醒闹钟触发时,设备会在执行闹钟的 部分唤醒锁定。如果唤醒闹钟触发次数过多,则可能会耗尽设备的电池电量。

为了帮助您提高应用质量,Android 会自动监控应用是否存在过多唤醒闹钟,并在 Android Vitals 中显示相关信息。如需了解如何收集数据,请参阅 Play 管理中心文档。

如果您的应用唤醒设备的次数过多,您可以使用本页中的指南来诊断和解决问题。

修复问题

WorkManager 这样的新功能且效果更好。本部分包含有关减少唤醒闹钟的提示,但从长远来看,请考虑迁移您的应用,以遵循最佳做法部分中的建议。

确定您在应用中的哪些位置调度了唤醒闹钟,并降低这些闹钟的触发频率。请参考以下提示:

我们建议您在闹钟的标记名称中包含您的软件包、类或方法名称,以便在源代码中轻松识别设置了闹钟的位置。下面提供了更多相关提示:

在名称中省去任何个人身份信息 (PII),例如电子邮件地址。否则,设备将记录 _UNKNOWN 而不是闹钟名称。

请勿以编程方式(例如通过调用

请勿向闹钟标签添加计数器或唯一标识符。系统将无法汇总以这种方式设置的闹钟,因为它们都具有唯一标识符。

解决该问题后,运行以下 ADB 命令,验证唤醒闹钟是否正常运行:

adb shell dumpsys alarm

此命令提供有关设备上的闹钟系统服务状态的信息。如需了解详情,请参阅 dumpsys。

最佳做法

仅当您的应用需要执行面向用户的操作时(例如发布通知或提醒用户),才应使用唤醒闹钟。有关 AlarmManager 最佳做法的列表,请参阅调度重复闹钟。

请勿使用 WorkManager 来调度后台任务,因为它具有以下优势:

批处理 - 将作业合并在一起,以减少耗电量

持久性 - 如果重新启动设备,则调度的 WorkManager 作业会在重新启动后运行

条件 - 作业可以根据条件(例如设备是否正在充电或 WLAN 是否可用)运行