2013-05-04 53 views
2

简单的问题:那就是AlarmManager总是重启后清除?是否在所有设备上重新启动后清除,甚至在用户启动设备后很快启动设备?警报管理员在重新启动后是否被清除?

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

回答

6

是AlarmManager在重新启动后总是被清除吗?

完全重新启动。有一些设备具有“快速启动”(HTC想到),而且我还没有进行实验来了解其中的行为。

甚至当用户在启动设备后很快启动设备?

是的。

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

报警实际上是HashMap,由PendingIntent键控。使用等效的PendingIntent设置警报应该替代先前的警报。 “等价”,我的意思是:

  • 同样的操作(活动,服务,广播)
  • 相同的请求代码
  • 等效Intent(通过filterEquals()比赛,这几乎意味着一切,除了演员匹配)
  • 我会很担心定义新PendingIntent

时,您可以使用使用确认设置了什么警报,因此您确定您的警报数量合适。

+0

因此,在OnBootReceiver中调用'cancel()'并在调用'set()'之后可能是个好主意? – Xander 2013-05-04 13:43:25

+0

@ Merlin:就我个人而言,我不知道任何需要的场景。例如,HTC quickboot不会触发ACTION_BOOT_COMPLETED。话虽如此,当然欢迎您这样做 - 如果没有针对该“PendingIntent”的现有警报,'cancel()'应该没有问题。 – CommonsWare 2013-05-04 13:49:08

+0

是的,我的OnBootReceiver也接收到'android.intent.action.QUICKBOOT_POWERON'(如果警报在quickboot中被取消),所以我会在设置之前取消它。感谢您的帮助! – Xander 2013-05-04 14:06:45

相关问题