【问题标题】:Android: pause Widget updates using AlarmmanagerAndroid:使用 Alarmmanager 暂停小部件更新
【发布时间】:2011-11-16 13:12:54
【问题描述】:

我刚刚完成了这个教程: update-widget-in-onreceive-method (顺便说一句:您会建议对该代码进行任何改进吗?)

最后有人提到:

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

所以我的问题是:有没有办法做到这一点?如何? 还是警报管理器自动停止? - 我不这么认为。

【问题讨论】:

    标签: android android-widget alarmmanager


    【解决方案1】:

    您可以指定设备在安排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);
    

    【讨论】:

    • 这有点误导。即使您使用 ELAPSED_REALTIME,警报也可能会在屏幕处于睡眠状态时触发,如 this thread 中所述。
    猜你喜欢
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多