Broadcast - 廣播
目錄
- 機制
機制
應(yīng)用程序可以監(jiān)聽或者發(fā)送 Broadcast 進(jìn)行輕量級的溝通耗帕。
廣播的分類
- 標(biāo)準(zhǔn)廣播 - 一條廣播多個接收器幾乎同時收到
- 有序廣播 - 一條廣播按照優(yōu)先級接收穆端,可以被截斷
接收廣播(BroadcastReceiver)
- 通過BroadcastReceiver進(jìn)行接收廣播。
- 動態(tài)注冊或者靜態(tài)注冊BroadcastReceiver
動態(tài)注冊:靈活仿便,只有app啟動后才會開始接收廣播
靜態(tài)注冊:app沒有啟動都會進(jìn)行監(jiān)聽
例子:
- 動態(tài)注冊監(jiān)聽網(wǎng)絡(luò)變化
- 靜態(tài)注冊監(jiān)聽系統(tǒng)開機完畢体啰,完成開機自啟
源碼包括3次更新:
- 動態(tài)注冊Receiver
- 靜態(tài)注冊Receiver用于開機自啟應(yīng)用
- 自定義廣播的發(fā)送與接受
有序廣播
有序廣播的用法和標(biāo)準(zhǔn)廣播用法差不多。
sendOrderedBroadcast(intent,權(quán)限相關(guān)的字符串可以為null)
用于發(fā)送廣播- 通過
Mainfest
文件注冊Receiver
并且給予對應(yīng)的接收廣播的優(yōu)先級android:priority="100"
,值越大嗽仪,優(yōu)先級越高荒勇。- 優(yōu)先級高的
Receiver
收到廣播后可以通過abortBroadcast()
來截斷廣播。
本地廣播
顧名思義闻坚,廣播只能在自身的app中內(nèi)部傳遞沽翔。
使用:// 獲取LocalBroadcastManager實例并發(fā)送廣播 private LocalBroadcastManager lb = LocalBroadcastManager().getInstance(this) Intent intent = new Intent("action") lb.sendBroadcast(intent) // 后面就是動態(tài)注冊Receiver進(jìn)行監(jiān)聽咯