2016-09-20 59 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

相關問題