2
簡單的問題:那就是AlarmManager
總是重啓後清除?是否在所有設備上重新啓動後清除,甚至在用戶啓動設備後很快啓動設備?警報管理員在重新啓動後是否被清除?
我需要知道這一點,因爲我在OnBootReceiver
中重新創建我的應用的鬧鐘,我想避免設置雙重鬧鐘。
簡單的問題:那就是AlarmManager
總是重啓後清除?是否在所有設備上重新啓動後清除,甚至在用戶啓動設備後很快啓動設備?警報管理員在重新啓動後是否被清除?
我需要知道這一點,因爲我在OnBootReceiver
中重新創建我的應用的鬧鐘,我想避免設置雙重鬧鐘。
是AlarmManager在重新啓動後總是被清除嗎?
完全重新啓動。有一些設備具有「快速啓動」(HTC想到),而且我還沒有進行實驗來了解其中的行爲。
甚至當用戶在啓動設備後很快啓動設備?
是的。
我需要知道這一點,因爲我在OnBootReceiver中重新創建我的應用程序的鬧鐘,我想避免設置雙重鬧鐘。
報警實際上是HashMap
,由PendingIntent
鍵控。使用等效的PendingIntent
設置警報應該替代先前的警報。 「等價」,我的意思是:
Intent
(通過filterEquals()
比賽,這幾乎意味着一切,除了演員匹配)PendingIntent
時,您可以使用使用確認設置了什麼警報,因此您確定您的警報數量合適。
因此,在OnBootReceiver中調用'cancel()'並在調用'set()'之後可能是個好主意? – Xander 2013-05-04 13:43:25
@ Merlin:就我個人而言,我不知道任何需要的場景。例如,HTC quickboot不會觸發ACTION_BOOT_COMPLETED。話雖如此,當然歡迎您這樣做 - 如果沒有針對該「PendingIntent」的現有警報,'cancel()'應該沒有問題。 – CommonsWare 2013-05-04 13:49:08
是的,我的OnBootReceiver也接收到'android.intent.action.QUICKBOOT_POWERON'(如果警報在quickboot中被取消),所以我會在設置之前取消它。感謝您的幫助! – Xander 2013-05-04 14:06:45