1. 程式人生 > >Android中Broadcast Receiver元件詳解

Android中Broadcast Receiver元件詳解

BroadcastReceiver(廣播接收器)是Android中的四大元件之一。

下面是Android Doc中關於BroadcastReceiver的概述:
①廣播接收器是一個專注於接收廣播通知資訊,並做出對應處理的元件。很多廣播是源自於系統程式碼的──比如,通知時區改變、電池電量低、拍攝了一張照片或者使用者改變了語言選項。應用程式也可以進行廣播──比如說,通知其它應用程式一些資料下載完成並處於可用狀態。
②應用程式可以擁有任意數量的廣播接收器以對所有它感興趣的通知資訊予以響應。所有的接收器均繼承自BroadcastReceiver基類。
③廣播接收器沒有使用者介面。然而,它們可以啟動一個activity來響應它們收到的資訊,或者用NotificationManager來通知使用者。通知可以用很多種方式來吸引使用者的注意力──閃動背燈、震動、播放聲音等等。一般來說是在狀態列上放一個持久的圖示,使用者可以開啟它並獲取訊息。

Android中的廣播事件有兩種,一種就是系統廣播事件,比如:ACTION_BOOT_COMPLETED(系統啟動完成後觸發),ACTION_TIME_CHANGED(系統時間改變時觸發),ACTION_BATTERY_LOW(電量低時觸發)等等。另外一種是我們自定義的廣播事件。

廣播事件的流程
①註冊廣播事件:註冊方式有兩種,一種是靜態註冊,就是在AndroidManifest.xml檔案中定義,註冊的廣播接收器必須要繼承BroadcastReceiver;另一種是動態註冊,是在程式中使用Context.registerReceiver註冊,註冊的廣播接收器相當於一個匿名類。兩種方式都需要IntentFIlter


②傳送廣播事件:通過Context.sendBroadcast來發送,由Intent來傳遞註冊時用到的Action。
③接收廣播事件:當傳送的廣播被接收器監聽到後,會呼叫它的onReceive()方法,並將包含訊息的Intent物件傳給它。onReceive中程式碼的執行時間不要超過5s,否則Android會彈出超時dialog。

Step1:在MainActivity的onStart方法中註冊廣播事件。靜態註冊方式是在AndroidManifest.xml檔案中。

Step2: 點選相應按鈕後會觸發相應的方式來發送廣播訊息。

Step3:接收廣播訊息。以下為兩個靜態註冊的廣播接收器。

下面是AndroidManifest.xml檔案:

介面佈局檔案main.xml

講解結束,不過有一點我自己也沒弄清楚,這個系統廣播事件如果我在程式中sendBroadcast的話,那就是自定義廣播了。如果不寫的話,那是不是系統自己來發送對應Action廣播呢?有知道的同學請告訴我一下,再此先謝過。  

執行介面: