2011-03-27 19 views
4

有人可以解釋我不同的情況下使用AlarmManager vs Handler的例子。使用這兩者作爲彼此交替的任何缺點?不同情況下使用AlarmManager vs Handler Android

謝謝。

+0

如果您打算使用AlarmManager,請查看BuzzBox SDK:它建立在它之上,您可以使用cron表達式來安排任務。讓我知道你的想法:http://hub.buzzbox.com/android-sdk/ – robsf 2011-03-28 17:03:59

回答

13

他們沒有多少關係。我假設你指的是使用類似postDelayed()Handler進行輪詢,這只是Handler的一個小特徵。

您可以使用postDelayed()(也可用於任何窗口小部件或其他子類的View)進行活動本身內的簡單計時事件。

您可以使用AlarmManager進行定期的後臺操作,就像您在Linux/OS X或Windows上使用cron一樣。例如,如果您正在編寫電子郵件客戶端,則可以使用AlarmManager觸發調用郵件服務器的代碼並檢查新消息。用戶可以選擇電子郵件檢查頻率,這將決定AlarmManager會觸發您的代碼的頻率。

+0

感謝您的答案 – poddroid 2011-03-28 10:50:50

+0

我一直在尋找這個答案几天;謝謝。如果手機關機(屏幕黑屏),處理程序是否會執行postDelayed,但AlarmManager會如此?我有輪詢代碼,當手機永久保持開機狀態時,但當手機沒電時(或者在屏幕關閉但電話仍然開着時打電話的時候),這些代碼不起作用。想知道我是否應該尋找另一個bug或者如果交換AlarmManager可能會解決這個問題。 – kyle 2012-05-10 16:40:26

+3

@kyle:當手機睡着時,沒有任何東西在運行,包括任何'postDelayed()'東西。如果使用正確,AlarmManager可以喚醒手機。 – CommonsWare 2012-05-10 16:46:57