【发布时间】:2012-05-30 14:25:51
【问题描述】:
我通过AlarmManager.RTC 每 30 分钟运行一次服务。如果设备睡眠时间足够长以至于服务被调用两次(因此它们都被重新调度),当它醒来时,它会一次触发两次服务。
所需的行为是AlarmManager 在唤醒时只触发一个Intent。我怎样才能做到这一点?
【问题讨论】:
标签: android alarmmanager
我通过AlarmManager.RTC 每 30 分钟运行一次服务。如果设备睡眠时间足够长以至于服务被调用两次(因此它们都被重新调度),当它醒来时,它会一次触发两次服务。
所需的行为是AlarmManager 在唤醒时只触发一个Intent。我怎样才能做到这一点?
【问题讨论】:
标签: android alarmmanager
试试这个:
PendingIntent.FLAG_UPDATE_CURRENT
【讨论】:
您是否取消了旧的警报管理器。如果没有办法,就用PendingIntent取消旧的吧
【讨论】:
PendingIntent,如何取消它?我想确保保留现有的意图调度,即我不想取消未来的意图。
PendingIntents 以完全相同的方式创建,则cancel() 将被视为同一个,依此类推。请参阅文档:developer.android.com/reference/android/app/PendingIntent.html
PendingIntent,这似乎是一个黑客行为。此外,警报是否并行安排?那么我就不能保证它会做任何事情。
PendingIntents 的定义相同,它们将不会被安排两次。
FLAG_CANCEL_CURRENT,我的意图也会按照所述再次安排。