2011-02-26 35 views
7

我正在編寫代碼以在特定時間向用戶顯示通知(就像Google日曆應用程序一樣)。顯示來自BroadcastReceiver的狀態欄通知

我因此創建的:

  • 一個BroadcastReceiver偵聽BOOT_COMPLETED,在接收它以不超載時,它仍在加載東西設備設置一個報警在一分鐘內;
  • 一個BroadcastReceiver偵聽警報:第一套BOOT_COMPLETED後一分鐘,並在下次預約(在谷歌日曆等)在未來

所以,通常爲:

  1. BOOT_COMPLETED =>一分鐘延遲發射報警
  2. 一分鐘後=>接收器爲下次約會設置另一個報警
  3. 幾分鐘/小時/天后,報警去es off => Receiver顯示狀態欄通知

這表示狀態欄通知是從BroadcastReceiver啓動的。

我在,他們應該從活動或服務推出的文檔閱讀:https://developer.android.com/guide/topics/ui/notifiers/notifications.html#Basics

我所要求的最佳實踐在這裏。我應該創建一個Service,將由BroadcastReceiver啓動,並且唯一的目的是啓動狀態欄通知?我的代碼正在工作,我只是想按照Google的建議創建乾淨的代碼。

+0

很好的問題,這讓我考慮重新設計我當前的設置,它使用了你所描述的'Alarm'->'BroadcastReceiver'->'Notification'方案: - \ –

回答

1

您可以從BroadcastReceiver,AFAIK中添加一個Notification。這應該相當快。如果StrictMode抱怨,那麼它可能值得擔心 - 否則,你應該沒問題。

+0

正確。只是爲了安全起見,實際顯示通知的警報實際上將啓動服務,該服務將顯示通知。如果我在通知之前添加昂貴的代碼,這也將是未來的保證。 –