【问题标题】:Why does Android's alarm manager forgets alarms?为什么Android的闹钟管理器会忘记闹钟?
【发布时间】:2016-12-11 10:02:08
【问题描述】:

我设置了警报以在不同的时间通知用户。我检查了“adb shell dumpsys alarm”,它们看起来像

RTC_WAKEUP #2:警报{433c7328 type 0 com.app.package} type=0 whenElapsed=89936417 when=+9h8m5s417ms window=-1 repeatInterval=0 count=0 operation=PendingIntent{42e8e7f8: PendingIntentRecord{42deb070 com.app.package broadcastIntent}}

有时它们会停留并工作至少 2 天(我没有测试更长时间),有时它们会在几个小时左右后全部消失,甚至在第一次通知应该发生和“adb shell dumpsys 警报”之前不再显示我的任何条目。 (我测试了 2 台设备,Android 4.0 和 4.4)

我知道警报管理器在设备重启后会忘记这些条目,我处理了这个案例并在之后重新添加了它们。但显然还有其他情况,警报管理器在没有重新启动的情况下忘记了条目。我想知道这些是哪些情况以及如何处理。

【问题讨论】:

    标签: android alarmmanager android-alarms


    【解决方案1】:

    来自AlarmManager

    此类提供对系统警报服务的访问。这些允许您安排您的应用程序在将来的某个时间点运行。当警报响起时,已为其注册的 Intent 由系统广播,如果目标应用程序尚未运行,则自动启动它。已注册的闹钟会在设备处于睡眠状态时保留(如果在此期间响起,可以选择唤醒设备),但如果设备关闭并重新启动,则会被清除。
    它会一直工作,直到您的应用程序被杀死或设备重新启动。(如果您从最近的列表中删除了一个应用程序,或者从应用程序管理器中删除了该应用程序。这意味着您被强制完全杀死了该应用程序。然后是您的应用程序的 AlarmManager已被删除。)
    在某些情况下,当您的应用程序处于后台时,android 将其杀死以访问更多内存。

    您可以在How to create a persistent AlarmManager 和How to save Alarm after app killing? 阅读有关应用程序终止的更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多