为什么安卓的闹钟管理器会忘记闹钟?



i设置警报以在不同时间通知用户。我检查" ADB Shell Dumpsys警报",它们看起来像

rtc_wakeup#2:警报{433C7328类型0 com.app.package} type = 0 neelapsed = 89936417 = 9H8M5S417MS窗口= -1 repotiNterval = 0 count = 0 操作= pendingIntent {42e8e7f8:pendingIntentRecord {42deb070 com.app.package broadcastIntent}}}

有时他们会停留和工作至少2天(我没有测试更长的时间),有时它们在几个小时左右后都消失了,甚至在第一个通知之前就应该发生,并且" ADB Shell Dumpsys警报"不再显示我的任何条目了。(我用2种设备Android 4.0和4.4测试)

我确实知道,警报经理会在重新启动设备后忘记了条目,然后我照顾了这种情况,然后重新添加了它们。但是显然,在其他情况下,警报经理会忘记条目而没有重新启动。我想知道这些情况是哪些情况以及如何处理它们。

来自alarmmanager

此类提供对系统警报服务的访问。这些使您可以安排您的应用程序在将来的某个时候运行。当警报响起时,已注册为其注册的目的是由系统播放的,如果目标应用程序尚未运行,则会自动启动。设备入睡时保留注册的警报(如果在此期间关闭设备,可以选择唤醒该设备),但是如果将其关闭并重新启动时,将被清除。>
它将工作直到您的申请被杀死或重新启动设备为止。已被删除。)
在某些情况下,当您的应用在后台时,Android将其杀死以访问更多RAM。

您可以通过如何创建持续的AlarmManager阅读有关应用程序Kill的更多信息,以及在应用程序杀死后如何保存警报?

最新更新