【问题标题】:android - What do I need to keep to persist alarm after reboot?android - 重启后我需要保持什么来保持警报?
【发布时间】:2016-12-02 22:30:12
【问题描述】:

我目前正在开发一个 Android 应用程序,我需要在其中设置将在特定日期和时间触发并显示通知的持久警报。它运行良好,但系统在重新启动时清除了所有警报。

从其他问题我知道,如果我为BOOT_COMPLETED 创建一个BroadcastReceiver,我可以重新设置已取消的警报。我的问题是:我需要保留哪些关于这些警报的信息以便在需要时重新武装它们?

有人说我需要保留所有 Intent 额外内容和触发日期时间,以便在重新启动时重新创建 PendingIntent

其他人说如果我只为PendingIntent保留requestCode,重启后我可以使用此代码获取取消的PendingIntent并重新设置警报,因为当设备重启时PendingIntent的只是取消而不是删除。

哪一种方法是正确的?

【问题讨论】:

  • “我需要保留哪些关于这些警报的信息,以便在需要时重新武装它们?” -- 与您最初用于安排警报的信息相同。 “其他人说,如果我只保留 Pending Intent 的 requestCode,重启后我可以使用此代码获取取消的 Pending Intent 并重新发出警报,因为当设备重新启动时,Pending Intent 只是被取消而不是删除”-总之,没有。 AFAIK,PendingIntent 无法在重启后存活。

标签: android android-intent alarmmanager alarm android-alarms


【解决方案1】:

PendingIntents 不会在重启后持续存在,所以为了安全起见,只需在 BroadcastReceiver 中重新启动警报,并使用您在首次初始化警报时所做的所有意图附加内容,并保持请求代码相同。

【讨论】:

  • 另外,如果您对请求代码的作用感到好奇,请查看stackoverflow.com/questions/21526319/…
  • 您能否更详细地解释一下您在 BroadcastReceiver 中重新启动警报时的意思?我如何保留这些意图的附加功能以再次使用它们,以便启动警报知道它是同一个警报?感谢您的帮助。
  • 你们俩都很好,但它只能在模拟器上工作,不能在现实世界的设备上工作。开发人员及其辛勤工作在现实世界和现实世界的设备上没有任何价值
猜你喜欢
  • 2012-10-11
  • 2016-12-13
  • 2015-09-06
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
  • 2022-01-07
  • 2020-01-14
  • 1970-01-01
相关资源
最近更新 更多