android中廣播的理解

廣播(Broadcast)
一,簡介
Broadcast是android中四大組件之一,它經常不用,在推送中會用到。它屬於一種流氓組件,經常播報一些內容,會泄露用戶的信息,所以在開發中儘量少用。
在完成一些操作之後,會發送廣播,比如說發出一條短信或打出一個電話,如果某個程序接收了這個廣播,就會做相應的處理。之所以叫廣播,就是因爲它只負責說,不管你聽不聽,也就是不管你接收方如何處理。
廣播機制最大的特點就是發送方並不關心接收方是否收到數據,也不關心接收方是如何處理數據的。
其實廣播在我們的身邊時時存在,比如智能攔截騷擾短信和電話。
二,廣播機制的三要素
1,廣播(Broadcast):用於發送廣播
2,廣播接收器(BroadcasReceiver):用於接收廣播
3,意圖內容(Intent):用於保存廣播相關信息的媒介
三,廣播的生命週期
廣播接收器僅在它執行這個方法時處於活躍狀態,當onReceive()返回後,它即爲失活狀態。
四,廣播的類型
廣播被分爲兩種不同的類型,普通廣播和有序廣播
普通廣播是完全異步的,可以在同一時刻被所有廣播接收者收到,消息傳遞的效率比較高,但缺點是:接收者不能將處理結果傳遞給下一個接收者,並且無法終止廣播Intent的傳播。
有序廣播恰恰彌補了普通廣播的這個缺陷,它是按照接收者聲明的優先級別被廣播接收者一級一級接受廣播的。
 <receiver android:name="com.saiermeng.govandpeople.ShengGovReceiver" >
            <intent-filter android:priority="1000" >
                <action android:name="com.saiermeng.redheaddoc.BTNM" />
            </intent-filter>
        </receiver>
        <receiver android:name="com.saiermeng.govandpeople.ShiGovReceiver" >
            <intent-filter android:priority="800" >
                <action android:name="com.saiermeng.redheaddoc.BTNM" />
            </intent-filter>
        </receiver>
        <receiver android:name="com.saiermeng.govandpeople.XianGovReceiver" >
            <intent-filter android:priority="600" >
                <action android:name="com.saiermeng.redheaddoc.BTNM" />
            </intent-filter>
        </receiver>
        <receiver android:name="com.saiermeng.govandpeople.XiangGovReceiver" >
            <intent-filter android:priority="400" >
                <action android:name="com.saiermeng.redheaddoc.BTNM" />
            </intent-filter>
        </receiver>
        <receiver android:name="com.saiermeng.govandpeople.NongMinReceiver" >
            <intent-filter android:priority="-1000" >
                <action android:name="com.saiermeng.redheaddoc.BTNM" />
            </intent-filter>
        </receiver>
數越大優先級別越高,取值範圍是-1000到1000

五,註冊BroadcasReceiver
BroadcasReceiver用於監聽被廣播的事件(intent)爲了達到這個目的,BroadcasReceiver必須在清單 文件中進行註冊,
註冊的方法有以下兩種:
1,靜態註冊:
靜態註冊方式是在清單文件的application裏面定義receiver並設置要接收的action
靜態註冊方式的特點:不管該應用程序是否處於活躍狀態,都會進行監聽。
 <receiver android:name="MyReceiver" >
  <intent-filter>
                <action android:name="MyReceiver_Action" />
            </intent-filter>
</receive>
2,動態註冊:
動態註冊方式在activity裏面調用函數來註冊,和靜態的內容差不多。
動態註冊方式特點:在代碼中進行註冊後,當應用程序關閉後,就不再進行監聽。
MyReceiver receiver=new MyReceiver();
IntentFilter filter=new IntentFilter("MyReceiver_Action");
registerReceiver(receiver,filter);//註冊廣播接收器
與intent的顯示意圖和隱式意圖一樣。
注:
1,一般在onStart中註冊BroadcasReceiver,在onStop中取消BroadcasReceiver。
2,一個BroadcasReceiver對象只有在被對象調用onReceive(Context,Intent)時纔有效,當從該函數返回後,該對象就是無效的了,結束生命週期。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章