[TOC]
大綱

Broadcast.png
Broadcast(廣播) 是 Android 的四大組件之一,用于進(jìn)程/線程間通信。
廣播最大的特點(diǎn)就是發(fā)送方并不關(guān)心接收方是否接到數(shù)據(jù),也不關(guān)心接收方是如何處理數(shù)據(jù)的,它只負(fù)責(zé)「說(shuō)」而不管你「聽(tīng)不聽(tīng)」。
廣播可以來(lái)之系統(tǒng),例如,Android 系統(tǒng)在發(fā)生各種系統(tǒng)事件時(shí)發(fā)送廣播(系統(tǒng)啟動(dòng)或者設(shè)備開(kāi)始充電時(shí))。
也可以來(lái)自于其他應(yīng)用程序,例如,應(yīng)用程序也可以發(fā)送自定義廣播,來(lái)通知其他應(yīng)用程序接受他們可能感興趣的內(nèi)容(更新數(shù)據(jù))。
按發(fā)送方式分類
標(biāo)準(zhǔn)廣播
- 完全異步的廣播,效率高,無(wú)法被截?cái)?/li>
- 發(fā)送
sendBroadcast(intent)
有序廣播
- 同步執(zhí)行的廣播,有先后次序,可以被截?cái)?/li>
- 發(fā)送
sendOrderBroadcast(intent,null) - 截?cái)?
abortBroadcast()
按注冊(cè)方式分類
動(dòng)態(tài)廣播
- 注冊(cè)
registerReceiver(BroadcastReceiver,intentFilter) - 注銷
unregisterReceiver(BroadcastReceiver)
靜態(tài)廣播
在manifest.xml中添加receiver和intent-filter
<receiver
android:name=".MyReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<!-- 例如:接收系統(tǒng)開(kāi)機(jī)廣播 -->
<action android:name="android.intent.action.BOOT_COMPLETED" />
<!-- 例如:接收自定義的廣播 -->
<action android:name="com.demo.broadcast.MyReceiverFilter" />
</intent-filter>
</receiver>
按定義方式分類
系統(tǒng)廣播
上述的幾種都屬于系統(tǒng)廣播,即發(fā)出的廣播可以被其他任何應(yīng)用程序接收到
本地廣播
- 只能在該應(yīng)用程序內(nèi)部傳遞
- 獲取實(shí)例
LocalBroadcastManager LBM = LocalBroadcastManager.getInstance(this) - 發(fā)送廣播
LBM.sendBroadcast(intent) - 注冊(cè)監(jiān)聽(tīng)
LBM.registerReceiver(Receiver,intentFilter) - 注銷監(jiān)聽(tīng)
LBM.unregisterReceiver(Receiver)