Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android編程入門 >> Android四大組件之BroadcastReceiver

Android四大組件之BroadcastReceiver

編輯:Android編程入門

一、在這裡我會先說明兩個基本概念,Broadcast(廣播)和BroadcastReceiver(廣播接收器)

    1、Broadcast:是運用在應用程序內部以及應用程序之間的一種傳輸信息的機制

    2、BroadcastReceiver:對發送過來的廣播進行過濾並且進行響應的組件,用來接收來自系統或者應用中的廣播的。

二、使用方法:分為發送和接受兩個階段

     1、發送:把要發送的消息裝入到一個Intent對象,再通過調用相應的方法把Intent對象以廣播的形式發送出去,具體實現如下:

      (1)普通廣播的發送 sendBroadcast(intent)

           

       (2)有序廣播的發送sendOrderedBroadcast(intent,receiverPermission)

           

        (3)粘性廣播的發送sendStickyBroadcast(intent)

               

    2、接受:當Intent發送以後,所有已經注冊的BroadcastReceiver會檢查注冊時的Intent是否與發送的Intent想匹配,若匹配則就會調用BroadcastReceiver(BC1和BC2)和

        onReceiver()

        方法,所以當我們定義一個BroadcastReceiver的時候,都需要實現onReceiver()方法類。

        注意:BroadcastReceiver需要注冊(靜態注冊、代碼注冊)

         下邊是清單注冊

        

       下邊是在代碼中注冊(動態注冊)

       

       代碼注冊要銷毀廣播

        

三、特別說明

     BroadcastReceiver的生命周期只有幾秒鐘,所以BroadcastReceiver裡不能做一些耗時的操作,如果要做耗時操作,應該通過發送Intent給Service。由Service來完成,不能用子線程操作,因為有可能接收器已經結束了,但是子線程還沒有結束,就會有一種情況發生:接收器結束了,那麼Receiver所在的進程很可能在被需要的時候已經被殺死,因為此時已經是空進程(一個沒有任何活動組件的進程就是空進程了)了,那麼正在工作的子線程也會被殺死,所以采用子線程解決是不可靠的。

四、廣播的種類

     1、普通廣播:所有監聽該廣播的廣播接受者都可以監聽到該廣播

     2、有序廣播:按照接受者的優先級順序接受廣播,優先級別在intent-filter中的priority中聲明,-1000到1000之間,值越大,優先級別越高。可以終止廣播的意圖繼續傳播,

         接受者可以篡改內容                  

    3、異步廣播(粘性廣播):不能將處理結果傳給下一個接受者,無法終止廣播

五、三種廣播的特點

     1、普通廣播特點:同級別接收先後是隨機的(無序)

                              級別低的後接受到廣播

                              接收器不能截斷廣播的繼續傳播也不能改變處理廣播

     2、有序廣播特點:同級別接收先後是隨機的(無序)

                              同級別動態注冊高於靜態注冊

                             能截斷廣播的繼續傳播,高級別的廣播接收器收到廣播要截斷廣播的方法:abortBroadcast()

                             接收器能截斷廣播的繼續傳播,也能處理廣播 

       

       接受廣播處理後的數據

      

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved