2

简单的问题:重启后AlarmManager 总是清除吗?在所有设备上重新启动后是否会清除它,甚至当用户在他启动设备后不久启动他的设备时?

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

4

1 回答 1

6

重启后AlarmManager总是被清除吗?

绝对是完全重启。有些设备具有“快速启动”功能(我想到了 HTC),我还没有进行实验来查看那里的行为。

甚至当用户在他启动设备后不久就启动了它?

是的。

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

警报实际上是由HashMap键控的PendingIntent。使用等效设置警报PendingIntent应取代先前的警报。“等效”是指:

  • 相同的操作(活动、服务、广播)
  • 相同的请求代码
  • 等效Intent(通过 匹配filterEquals(),这几乎意味着它匹配除附加内容之外的所有内容)
  • 而且我FLAG_CANCEL_CURRENT在定义新的时候会很紧张PendingIntent

您可以使用它adb shell dumpsys alarm来确认设置了哪些警报,这样您就可以确定您最终获得了正确数量的警报。

于 2013-05-04T11:36:19.527 回答