廣播(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)時纔有效,當從該函數返回後,該對象就是無效的了,結束生命週期。
android中廣播的理解
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
安卓中服務Service的詳解
四大組件之一:服務Service 一,定義 服務是一個沒有用戶界面的在後臺運行執行耗時操作的應用組件。其他應用組件能夠開啓Service,並且當用戶
smile0528
2020-06-19 09:23:52
android中適配器的分析
一,適配器. 顧名思義,就是把一些數據給弄得適當,適合以便於在View上顯示。可以看作是 界面數據綁定的一種理解。它所操縱的數據一
smile0528
2020-06-19 09:23:52
Android提示版本更新
小明搞开发
2020-02-25 08:20:33
dialog 的使用
小明搞开发
2020-02-25 08:20:33
Android APK反編譯就這麼簡單 詳解(附圖)
小明搞开发
2020-02-25 08:20:32
Content Provider應用實例
小明搞开发
2020-02-25 08:20:32
Android res目錄下的color.xml顏色總結
小明搞开发
2020-02-25 08:20:32
post請求方式和get請求方式等網絡請求方式總結
smile0528
2020-02-23 11:00:58
安卓中的context詳解
smile0528
2020-02-23 11:00:58
網絡請求——新聞客戶端的一個Demo
smile0528
2020-02-23 11:00:58
服務(service)——四大組件之一
smile0528
2020-02-23 11:00:58
listview中子條目的適配方式
smile0528
2020-02-23 11:00:58