报警管理员是否在重启后始终清除?

时间:2013-05-04 11:08:42

标签: java android alarmmanager reboot bootcompleted

简单问题:重新启动后AlarmManager 始终 是否已清除?在所有设备上重启后是否清除,甚至用户在启动设备后很快启动设备?

我需要知道这一点,因为我在OnBootReceiver中重新创建应用程序的警报,我想避免设置双重警报。

1 个答案:

答案 0 :(得分:6)

  

重启后是否总是清除AlarmManager?

绝对完全重启。有些设备有“快速启动”(HTC浮现在脑海中),我还没有运行实验来查看那里的行为。

  

即使用户在启动设备后很快就启动了设备?

  

我需要知道这一点,因为我在OnBootReceiver中重新创建应用程序的警报,我想避免设置双重警报。

警报实际上位于由HashMap键入的PendingIntent中。使用等效PendingIntent设置警报应替换先前的警报。 “等价”,我的意思是:

  • 相同的操作(活动,服务,广播)
  • 相同的请求代码
  • 等效Intent(通过filterEquals()匹配,这意味着它匹配除了额外内容之外的所有内容)
  • 在定义新的FLAG_CANCEL_CURRENT
  • 时,我会对使用PendingIntent感到紧张

您可以使用adb shell dumpsys alarm确认设置了哪些闹钟,因此您可以确保使用正确数量的闹钟。