2012-12-26 20 views
9

使用AlarmManager我的應用程序設置的報警器關閉,如果如何,如果應用程序是力的Android

  1. 強制用戶關閉我的應用程序的設置將被清除復位報警。
  2. 一些任務殺手應用程序自動殺死我的應用程序進程。
  3. 由於前端應用需要內存,Android本身殺死了我的應用。

請告訴我如何檢測它?而是如何設置我的鬧鐘,以便所有這些情況都不會影響我的鬧鐘。

回答

28

用戶強制在設置中關閉我的應用程序。

是的,這將清除報警。

有些任務殺手級應用自動殺死我的應用程序的過程。

這不會對任何最新版本的Android尚不清楚報警。

的Android本身殺了我的應用程序,因爲對前面的應用程序需要的內存。

這不會清除報警。

請告訴我,我怎麼發現的呢?

保持最後一次發生報警的時間(例如,在SharedPreferences)。當您的代碼運行時(例如,LAUNCHER活動已啓動),請檢查最後一次鬧鈴時間。如果很久以前,你知道你的警報已被清除,所以你需要重新安排它們。

而是如何設置我的警報,以便所有這些情況下不會影響我的警報。

這是不可能的。在很少情況下,報警實際上被清除(重新啓動和強制停止),並且在這些情況下,您無法做到防止您的報警被清除。

+0

謝謝commonsware,爲完整和煞費苦心的答案! –

+0

如果用戶清除應用程序的數據會怎麼樣?我們不會追蹤記錄嗎? – Krishnaraj

+0

@Krishnaraj:是的。希望你的用戶不這樣做。 – CommonsWare

2

@CommonsWare正如你所說的那樣「很少有情況下報警實際上被清除(重新啓動和強制停止),並且在這種情況下你不能做任何事情來防止你的報警被清除。

但我覺得都可以處理:

重啓:意向行動android.intent.action.BOOT_COMPLETED

強制關閉:如果應用程序使用某些服務器通信可以被處理,在那裏你可以集成GCM如果它死了,它最終可能會啓動你的應用程序。 作爲的onReceive:

final Intent notificationIntent = new Intent(context, YourActivity.class); 
notificationIntent.setAction(Intent.ACTION_MAIN); 
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER); 

來啓動應用程序。

讓我知道,如果我錯了。

相關問題