Android:使用Alarmmanager暂停小部件更新

Android:使用Alarmmanager暂停小部件更新,android,android-widget,alarmmanager,Android,Android Widget,Alarmmanager,我刚刚完成了本教程: (顺便问一句:你会对该代码提出任何改进吗?) 最后有人提到: 我只是想知道是否有一种方法可以进一步扩展,这样当设备处于睡眠状态(屏幕关闭)时,更新就会停止。然后,当设备唤醒时,更新将恢复 所以我的问题是:有没有办法做到这一点?怎样? 或者alarmmanager是否自动停止?-我不这么认为。您可以指定设备在调度任务时是否会唤醒 引用文件: 已用\u实时 SystemClock.elapsedRealtime()中的报警时间(时间 开机后,包括睡眠)此警报不会唤醒设备;如果在

我刚刚完成了本教程: (顺便问一句:你会对该代码提出任何改进吗?)

最后有人提到:

我只是想知道是否有一种方法可以进一步扩展,这样当设备处于睡眠状态(屏幕关闭)时,更新就会停止。然后,当设备唤醒时,更新将恢复

所以我的问题是:有没有办法做到这一点?怎样?
或者alarmmanager是否自动停止?-我不这么认为。

您可以指定设备在调度任务时是否会唤醒

引用文件:

已用\u实时
SystemClock.elapsedRealtime()中的报警时间(时间 开机后,包括睡眠)此警报不会唤醒设备;如果在设备处于睡眠状态时关闭,则在设备下次唤醒之前不会发送

已用\u实时\u唤醒
报警时间 SystemClock.elapsedRealtime()(自启动以来的时间,包括睡眠), 它将在设备关闭时唤醒设备

同样适用于
AlarmManager.RTC
AlarmManager.RTC_WAKEUP

因此,您可能需要两个
AlarmManager.RTC
AlarmManager.REALTIME
中的一个。当设备处于唤醒状态时,这些操作将继续,当设备处于待机状态时,这些操作将停止。如果在设备处于休眠状态时触发此警报,则在用户重新打开设备时会发出警报,这正是您想要的。不,AlarmManager计划的报警通常不会自动取消

此处提到的部分可在以下行中找到:

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 20*1000, pendingIntent);

这有点误导。即使使用实时,当屏幕处于休眠状态时,也可能会触发警报,如中所述。