2013-05-04 77 views
2

簡單的問題:那就是AlarmManager總是重啓後清除?是否在所有設備上重新啓動後清除,甚至在用戶啓動設備後很快啓動設備?警報管理員在重新啓動後是否被清除?

我需要知道這一點,因爲我在OnBootReceiver中重新創建我的應用的鬧鐘,我想避免設置雙重鬧鐘。

回答

6

是AlarmManager在重新啓動後總是被清除嗎?

完全重新啓動。有一些設備具有「快速啓動」(HTC想到),而且我還沒有進行實驗來了解其中的行爲。

甚至當用戶在啓動設備後很快啓動設備?

是的。

我需要知道這一點,因爲我在OnBootReceiver中重新創建我的應用程序的鬧鐘,我想避免設置雙重鬧鐘。

報警實際上是HashMap,由PendingIntent鍵控。使用等效的PendingIntent設置警報應該替代先前的警報。 「等價」,我的意思是:

  • 同樣的操作(活動,服務,廣播)
  • 相同的請求代碼
  • 等效Intent(通過filterEquals()比賽,這幾乎意味着一切,除了演員匹配)
  • 我會很擔心定義新PendingIntent

時,您可以使用使用確認設置了什麼警報,因此您確定您的警報數量合適。

+0

因此,在OnBootReceiver中調用'cancel()'並在調用'set()'之後可能是個好主意? – Xander 2013-05-04 13:43:25

+0

@ Merlin:就我個人而言,我不知道任何需要的場景。例如,HTC quickboot不會觸發ACTION_BOOT_COMPLETED。話雖如此,當然歡迎您這樣做 - 如果沒有針對該「PendingIntent」的現有警報,'cancel()'應該沒有問題。 – CommonsWare 2013-05-04 13:49:08

+0

是的,我的OnBootReceiver也接收到'android.intent.action.QUICKBOOT_POWERON'(如果警報在quickboot中被取消),所以我會在設置之前取消它。感謝您的幫助! – Xander 2013-05-04 14:06:45

相關問題