天天看點

Android開發22——廣播接收者BroadcastReceiver的原理和注冊方式

一、廣播機制的基本概念

當某個事件産生時(如一條短信發來或一個電話打來),android作業系統會把這個事件廣播給所有注冊的廣播接收者,需要處理這個事件的廣播接收者進行處理。其實這就是日常生活中的廣播。發生一個新聞後,廣播電台會廣播這個新聞給打開收音機的人,對這個新聞感興趣的人會關注,可能會拿筆記下。新聞就是事件,廣播電台就是android系統,打開收音機的人就是廣播接收者,感興趣的人就是需要處理該事件的廣播接收者,拿筆記下就是對該事件進行的操作。

二、廣播的分類——普通廣播和有序廣播

①普通廣播:完全異步,邏輯上可以被任何廣播接收者接收到。優點是效率較高。缺點是一個接收者不能将處理結果傳遞給下一個接收者,并無法終止廣播intent的傳播。

②有序廣播:按照被接收者的優先級順序,在被接收者中一次傳播。比如有三個廣播接收者a,b,c,優先級是a > b > c。那這個消息先傳給a,再傳給b,最後傳給c。每個接收者有權中終止廣播,比如b終止廣播,c就無法接收到。此外a接收到廣播後可以對結果對象進行操作,當廣播傳給b時,b可以從結果對象中取得a存入的資料。如系統收到短信發出的廣播就是有序廣播。

三、注冊廣播接收者的兩種方式

①在androidmanifest.xml中注冊

在配置檔案中注冊的接收者的特點是即使應用程式已被關閉,該接收者依然可接受它感興趣的廣播,比如手機電池電量的廣播接收者,沒有必要将某個程式開啟。下面的例子1、2廣播接收者會接收到撥打電話的廣播。

②在activity中注冊

在activity中綁定接收者必須依附該應用程式存在,或者一個broadcastreceiver用于更新ui,就沒有必要再程式關閉時接收者還運作,故無需在androidmanifest.xml中注冊而可以放在activity中注冊。

繼續閱讀