【Android】廣播的原理及實現(xiàn)步驟

1. 廣播

1.1 原理

發(fā)送方和接收方通過 AMS(Activity Manager Service) 來進行交互

交互過程
  1. 廣播接收者通過Binder機制在AMS注冊
  2. 廣播發(fā)送者通過Binder機制向AMS發(fā)送廣播
  3. AMS根據(jù)廣播發(fā)送者要求,在已注冊列表中,尋找符合條件的接受者(依據(jù):IntentFilter / Permission)
  4. AMS將廣播發(fā)送到合適的接受者消息循環(huán)隊列中
  5. 接受者通過消息循環(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, 并調用它注冊/解綁

2. 附錄

參考文檔(圖源):http://www.itdecent.cn/p/ca3d87a4cdf3

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容