如何在安卓应用程序被强制关闭时重置警报

11

如果用户在设置中强制关闭我的应用程序,则使用AlarmManager设置的我的应用程序警报将被清除。

  1. 某些任务杀手应用程序自动杀死了我的应用程序进程。
  2. Android本身杀死了我的应用程序,因为前台应用程序需要内存。

请告诉我如何检测它?或者如何设置我的警报,使得所有这些情况都不会影响我的警报。

1个回答

31

用户在设置中强制关闭了我的应用。

是的,这将清除警报。

某些任务管理器应用自动杀死了我的应用程序进程。

在任何最近版本的Android上都无法清除警报。

Android本身杀死了我的应用程序,因为前台应用程序需要内存。

这不会清除警报。

请告诉我如何检测它?

维护上次闹钟触发的时间记录(例如在SharedPreferences中)。当你的代码运行时(例如启动LAUNCHER活动),检查上次触发时间。如果很久以前,你就知道你的闹钟已被清除,所以需要重新安排它们。

如何设置我的闹钟,让所有这些情况都不影响我的闹钟。

这是不可能的。只有少数几种情况下会实际清除闹钟(重启和强制停止),你无法防止在这些情况下清除你的闹钟。


如果用户清除了应用程序的数据,我们会不会失去记录的追踪? - Krishnaraj
@CommonsWare 如果用户清除数据,闹钟也会被移除吗? - Krishnaraj
@Krishnaraj:我不知道,抱歉。 - CommonsWare
3
@bCliks:“这是正常行为吗?”-- 不是。这通常与“设置”中的“强制停止”相关联。偶尔,设备制造商会像您所描述的那样做一些事情。如果我有机会,我就会对他们大喊大叫。“如果这是正常行为,那么系统闹钟应用程序如何正常工作?”-- 设备制造商可以做任何他们想做的事情,因为这是他们的设备。 - CommonsWare
2
据我所知,崩溃不会影响闹钟。您可以通过在崩溃之前和之后检查adb shell dumpsys alarm(例如手动生成的NullPointerException进行实验)来确认闹钟状态。 - CommonsWare
显示剩余10条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接