我希望每天下午12点显示状态栏通知,因此,我创建了一个AlarmManager,它会触发一个IntentService,它会显示一些通知。
我已经添加了Boot完成的接收器,并且在应用程序被推送时注册了AlarmManager。即使应用程序不在前台(预期行为),一切都工作正常,通知每天下午12点显示。
问题是,每当我在应用程序设置中清除应用程序数据时,AlarmManager就不再触发应用程序通知。但是,当我再次启动应用程序时,应用程序每天都会开始处理通知,并发现预期的行为。
有人可以帮我解决这个问题吗?有没有解决方法来确保触发AlarmManager而不考虑这些条件。
答案 0 :(得分:3)
是否有解决方法来确保触发AlarmManager而不考虑这些条件?
没有。当您按下“清除数据”时,不仅会清除应用的数据its processes are also killed。当发生这种情况时,预定的警报会被它杀死。
发生这种情况并不奇怪。正在运行的应用程序可能需要您清除的数据,如果它没有找到该数据,则可能会崩溃。杀死应用程序可以防止这些崩溃。
答案 1 :(得分:2)
这是正常行为。如果用户自愿强制停止或清除应用程序的数据,则应该停止它。 android系统杀死整个任务,在再次运行活动之前,不允许运行任何服务或广播。所以你不能采取任何措施来防止这种情况发生。看到qn回答here。