2016-09-20 26 views
1

我希望在每天12点时显示状态栏通知,因此我创建了一个AlarmManager,它触发了一个IntentService,它将显示一些通知。应用程序AlarmManager在清除应用程序数据后不工作

我已经添加了Boot完成的接收器,并且当应用程序获得启动时,AlarmManager被注册。一切工作正常,即使应用程序不在前台(预期行为),通知也会在每天下午12点显示。

问题是,无论何时我在应用程序设置中清除应用程序数据,AlarmManager不再触发应用程序通知。但是,当我再次启动应用程序时,该应用程序将开始每天以预期的行为处理通知。

任何人都可以请帮我解决这个问题吗?有没有一种解决方法可以确保无论这些条件如何都触发AlarmManager。

回答

1

这是正常行为。如果用户自愿强制停止或清除应用程序的数据,则应该停止。 android系统会杀死整个任务,直到再次运行一项活动时才允许运行服务或广播。所以你不能做任何事情来阻止这一点。请参阅qn回答here

+0

有什么方法可以在应用程序时执行某些操作强行杀死(比如当应用程序被杀时重置闹钟)?? Android提供的任何设置? – oathkeeper

+0

@oathkeeper不,我不知道是否有任何黑客方法,但android不允许你直接做任何事情。 – droidev

2

有没有一种解决方法来确保AlarmManager被触发而不考虑这些条件?

不需要当按下“清除数据”时,不仅应用程序的数据已清除,its processes are also killed。当发生这种情况时,计划的警报就会被杀死。

发生这种情况并不奇怪。正在运行的应用程序可能需要清除数据,如果未找到该数据,则可能会崩溃。杀死该应用程序将防止这些崩溃。

+0

有什么方法可以在应用程序被强行杀死时执行一些操作(比如在应用程序被杀害时重置闹钟)? Android提供的任何条款? – oathkeeper

+0

@oathkeeper不,你不允许这样做。这将击败应用程序的目的 –

+0

谢谢你的帮助。看起来像杀应用程序是我的应用程序的致命弱点:( – oathkeeper

相关问题