简单的问题:重启后AlarmManager
总是清除吗?在所有设备上重新启动后是否会清除它,甚至当用户在他启动设备后不久启动他的设备时?
我需要知道这一点,因为我在 an 中重新创建了我的应用程序的警报,OnBootReceiver
并且我想避免设置双重警报。
简单的问题:重启后AlarmManager
总是清除吗?在所有设备上重新启动后是否会清除它,甚至当用户在他启动设备后不久启动他的设备时?
我需要知道这一点,因为我在 an 中重新创建了我的应用程序的警报,OnBootReceiver
并且我想避免设置双重警报。
重启后AlarmManager总是被清除吗?
绝对是完全重启。有些设备具有“快速启动”功能(我想到了 HTC),我还没有进行实验来查看那里的行为。
甚至当用户在他启动设备后不久就启动了它?
是的。
我需要知道这一点,因为我在 OnBootReceiver 中重新创建了我的应用程序的警报,并且我想避免设置双重警报。
警报实际上是由HashMap
键控的PendingIntent
。使用等效设置警报PendingIntent
应取代先前的警报。“等效”是指:
Intent
(通过 匹配filterEquals()
,这几乎意味着它匹配除附加内容之外的所有内容)FLAG_CANCEL_CURRENT
在定义新的时候会很紧张PendingIntent
您可以使用它adb shell dumpsys alarm
来确认设置了哪些警报,这样您就可以确定您最终获得了正确数量的警报。