【Android練級(jí)之路】Broadcast

[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)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容