1. 廣播
1.1 原理
發(fā)送方和接收方通過 AMS(Activity Manager Service) 來進行交互

交互過程
- 廣播接收者通過Binder機制在AMS注冊
- 廣播發(fā)送者通過Binder機制向AMS發(fā)送廣播
- AMS根據(jù)廣播發(fā)送者要求,在已注冊列表中,尋找符合條件的接受者(依據(jù):IntentFilter / Permission)
- AMS將廣播發(fā)送到合適的接受者消息循環(huán)隊列中
- 接受者通過消息循環(huán)拿到該廣播,并回調OnReceive()
1.2 實現(xiàn)一個廣播需要做的
- 發(fā)送方
- 可以自定義發(fā)送(通過定義intent及執(zhí)行sendBroadcast方法)
- 也可以由系統(tǒng)自動發(fā)送,即當系統(tǒng)的某些行為發(fā)生變化時,如時間更改,此時不需要做發(fā)送方的任何操作
- 接收方
- 自定義一個BroadcastReceiver,并重寫onReceive方法
- onReceive中執(zhí)行接收到廣播后做的操作
- 這個BroadcastReceiver必須要進行注冊,注冊方法有兩種:
- 靜態(tài)注冊:在AndroidManifest中定義receiver (Android 8后失效)
- 動態(tài)注冊:需要分別在onResume和onPause中進行注冊和銷毀
1.3 廣播的補充知識
- 設置僅接受本App內的廣播:
- 對于靜態(tài)注冊的廣播:設置exported屬性
- 對于動態(tài)注冊的廣播:實例化LocalBroadcastManger, 并調用它注冊/解綁