2
简单的问题:那就是AlarmManager
总是重启后清除?是否在所有设备上重新启动后清除,甚至在用户启动设备后很快启动设备?警报管理员在重新启动后是否被清除?
我需要知道这一点,因为我在OnBootReceiver
中重新创建我的应用的闹钟,我想避免设置双重闹钟。
简单的问题:那就是AlarmManager
总是重启后清除?是否在所有设备上重新启动后清除,甚至在用户启动设备后很快启动设备?警报管理员在重新启动后是否被清除?
我需要知道这一点,因为我在OnBootReceiver
中重新创建我的应用的闹钟,我想避免设置双重闹钟。
是AlarmManager在重新启动后总是被清除吗?
完全重新启动。有一些设备具有“快速启动”(HTC想到),而且我还没有进行实验来了解其中的行为。
甚至当用户在启动设备后很快启动设备?
是的。
我需要知道这一点,因为我在OnBootReceiver中重新创建我的应用程序的闹钟,我想避免设置双重闹钟。
报警实际上是HashMap
,由PendingIntent
键控。使用等效的PendingIntent
设置警报应该替代先前的警报。 “等价”,我的意思是:
Intent
(通过filterEquals()
比赛,这几乎意味着一切,除了演员匹配)PendingIntent
时,您可以使用使用确认设置了什么警报,因此您确定您的警报数量合适。
因此,在OnBootReceiver中调用'cancel()'并在调用'set()'之后可能是个好主意? – Xander 2013-05-04 13:43:25
@ Merlin:就我个人而言,我不知道任何需要的场景。例如,HTC quickboot不会触发ACTION_BOOT_COMPLETED。话虽如此,当然欢迎您这样做 - 如果没有针对该“PendingIntent”的现有警报,'cancel()'应该没有问题。 – CommonsWare 2013-05-04 13:49:08
是的,我的OnBootReceiver也接收到'android.intent.action.QUICKBOOT_POWERON'(如果警报在quickboot中被取消),所以我会在设置之前取消它。感谢您的帮助! – Xander 2013-05-04 14:06:45