Android:使用Alarmmanager暂停Widget更新

时间:2011-11-16 13:12:55

标签: android android-widget alarmmanager

我刚刚完成了本教程: update-widget-in-onreceive-method (顺便说一下:你会对该代码提出任何改进吗?)

最后有人提到:

  

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

所以我的问题是:有办法做到这一点吗?怎么样? 或警报管理器是否自动停止? - 我不这么认为。

1 个答案:

答案 0 :(得分:2)

您可以指定在安排AlarmManager时是否会唤醒设备。

来自文档的引用:

  

ELAPSED_REALTIME
  SystemClock.elapsedRealtime()中的闹钟时间(时间   自启动,包括睡眠)。 此警报不会唤醒设备;如果它在设备处于睡眠状态时熄灭,则在下次设备唤醒时才会发送。

     

ELAPSED_REALTIME_WAKEUP
  报警时间   SystemClock.elapsedRealtime()(自启动以来的时间,包括睡眠),   会在设备关机时唤醒设备

同样适用于AlarmManager.RTCAlarmManager.RTC_WAKEUP

所以你可能想要两个AlarmManager.RTCAlarmManager.ELAPSED_REALTIME中的一个。当设备处于唤醒状态时,它们会继续运行,并在设备处于待机状态时停止。如果在设备处于睡眠状态时触发此警报,则会在用户重新打开设备时将其发送,这正是您想要的。不,一般情况下,AlarmManagers预定的警报不会自动取消。

此处提到的部分可以在this part of the tutorial中找到,具体到此行:

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