【问题标题】:AlarmManager.RTC doing too many updates on wakeupAlarmManager.RTC 在唤醒时做了太多更新
【发布时间】:2012-05-30 14:25:51
【问题描述】:

我通过AlarmManager.RTC 每 30 分钟运行一次服务。如果设备睡眠时间足够长以至于服务被调用两次(因此它们都被重新调度),当它醒来时,它会一次触发两次服务。

所需的行为是AlarmManager 在唤醒时只触发一个Intent。我怎样才能做到这一点?

【问题讨论】:

    标签: android alarmmanager


    【解决方案1】:

    试试这个:

    PendingIntent.FLAG_UPDATE_CURRENT
    

    【讨论】:

      【解决方案2】:

      您是否取消了旧的警报管理器。如果没有办法,就用PendingIntent取消旧的吧

      看看这个Commonsware Example

      【讨论】:

      • 如何“获取”旧的PendingIntent,如何取消它?我想确保保留现有的意图调度,即我不想取消未来的意图。
      • @galaxyinfinite 如果两个PendingIntents 以完全相同的方式创建,则cancel() 将被视为同一个,依此类推。请参阅文档:developer.android.com/reference/android/app/PendingIntent.html
      • @izkata 我在哪里可以取消?从它已经启动的服务内部?就像我说的那样,我需要重新安排我的PendingIntent,这似乎是一个黑客行为。此外,警报是否并行安排?那么我就不能保证它会做任何事情。
      • @galaxyinfinite 请参阅stackoverflow.com/questions/5707656/… - 如果PendingIntents 的定义相同,它们将不会被安排两次。
      • @izkata,我也读过,但我没有得到那种行为。即使使用FLAG_CANCEL_CURRENT,我的意图也会按照所述再次安排。
      猜你喜欢
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多