BroadcastReceiver相關內容

原理

取自http://www.reibang.com/p/ca3d87a4cdf3
  • 訂閱者在AMS注冊
  • 發(fā)布者發(fā)送廣播到AMS
  • 廣播的流轉由AMS控制
class MyBroadcastReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        Log.i("ljf", "onReceive")
    }
}

廣播被接收后,回調onReceive

靜態(tài)注冊

在manifest聲明receiver

<receiver android:name=".MyBroadcastReceiver"/>

四大組件聲明必備,動態(tài)注冊到此是一致的。

靜態(tài)注冊必須聲明intent-filter,用于指明所接收的廣播国觉。

        <receiver android:name=".MyBroadcastReceiver">
            <intent-filter>
                <action android:name="ljf" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>

Category為四大組件分類,多組件同action時可根據(jù)intent中的category確定組件
常見
CATEGORY_DEFAULT:Android系統(tǒng)中默認的執(zhí)行方式,按照普通Activity的執(zhí)行方式執(zhí)行皮获。 
CATEGORY_HOME:設置該組件為Home Activity朝氓。
CATEGORY_PREFERENCE:設置該組件為Preference魔市。 
CATEGORY_LAUNCHER:設置該組件為在當前應用程序啟動器中優(yōu)先級最高的Activity赵哲,通常為入口ACTION_MAIN配合使用待德。 
CATEGORY_BROWSABLE:設置該組件可以使用瀏覽器啟動枫夺〗埽 
CATEGORY_GADGET:設置該組件可以內嵌到另外的Activity中。

通過靜態(tài)注冊的receiver,在首次啟動時注冊到AMS较坛,并常駐系統(tǒng)中印蔗。

由于Android系統(tǒng)的限制,靜態(tài)注冊無法獲得系統(tǒng)廣播(大大部分)丑勤,見下系統(tǒng)廣播

動態(tài)注冊

通過代碼進行注冊华嘹、注銷操作

val intentFilter=IntentFilter()
intentFilter.addAction("ljf")
intentFilter.addCategory("android.intent.category.DEFAULT")

registerReceiver(receiver, filter)

unregisterReceiver(receiver)

動態(tài)注冊并不會常駐,而是與綁定者生命周期一致法竞。注冊耙厚、注銷要成對出現(xiàn),否則當綁定者結束會報異常

普通廣播

發(fā)布者發(fā)送廣播岔霸,各個接收者接收廣播是獨自進行的并不會互相影響薛躬。

val intent = Intent("ljf")
intent.action="ljf"
intent.addCategory("android.intent.category.DEFAULT")
sendBroadcast(intent)

有序廣播

發(fā)布者發(fā)送廣播,廣播按接收者的優(yōu)先級呆细,由高優(yōu)先級向低優(yōu)先級傳遞

 <intent-filter android:priority="1000">  //-1000 至 1000

高優(yōu)先級的接收者向下傳遞廣播也可中止廣播的傳遞型宝,在向低優(yōu)先級的receiver傳遞時也可以添加中途處理的數(shù)據(jù)

abortBroadcast()
setResultExtras(Bundle())
getResultExtras(boolean)  //這里的Boolean為null處理

發(fā)送有序廣播需要指明permission,只有符合的receiver才可接收絮爷,permission為null表示不要求receiver

sendOrderedBroadcast(intent, "permission")

接收者需聲明自定義permission

<permission android:protectionLevel="normal"  //permission等級
            android:name="permission" />  

并使用此權限

<uses-permission android:name="permission" />  

系統(tǒng)廣播

由系統(tǒng)發(fā)出的廣播趴酣,但隨著Android系統(tǒng)升級Google對權限和性能的管理逐步細化

從Android 3.1開始,系統(tǒng)給Intent定義了兩個新的Flag坑夯,分別為FLAG_INCLUDE_STOPPED_PACKAGES(表示包含未啟動的App)和FLAG_EXCLUDE_STOPPED_PACKAGES(表示不包含未啟動的App)价卤,用來控制Intent是否要對處于停止狀態(tài)的APP起作用

系統(tǒng)廣播基本都FLAG_EXCLUDE_STOPPED_PACKAGES,所以當APP被stop后渊涝,即使靜態(tài)注冊的receiver也不會收到廣播

當自己開發(fā)多進程間的功能時慎璧,如果發(fā)廣播給另外的APP切記加FLAG_INCLUDE_STOPPED_PACKAGES

接收系統(tǒng)廣播時還是用動態(tài)注冊比較保險,以防Google和國內rom

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末跨释,一起剝皮案震驚了整個濱河市胸私,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鳖谈,老刑警劉巖岁疼,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異缆娃,居然都是意外死亡捷绒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門贯要,熙熙樓的掌柜王于貴愁眉苦臉地迎上來暖侨,“玉大人,你說我怎么就攤上這事崇渗∽侄海” “怎么了京郑?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長葫掉。 經常有香客問我些举,道長,這世上最難降的妖魔是什么俭厚? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任户魏,我火速辦了婚禮,結果婚禮上挪挤,老公的妹妹穿的比我還像新娘绪抛。我一直安慰自己,他們只是感情好电禀,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著笤休,像睡著了一般尖飞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上店雅,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天政基,我揣著相機與錄音,去河邊找鬼闹啦。 笑死沮明,一個胖子當著我的面吹牛,可吹牛的內容都是我干的窍奋。 我是一名探鬼主播荐健,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼琳袄!你這毒婦竟也來了江场?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤窖逗,失蹤者是張志新(化名)和其女友劉穎址否,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碎紊,經...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡佑附,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了仗考。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片音同。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖秃嗜,靈堂內的尸體忽然破棺而出瘟斜,到底是詐尸還是另有隱情缸夹,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布螺句,位于F島的核電站虽惭,受9級特大地震影響,放射性物質發(fā)生泄漏蛇尚。R本人自食惡果不足惜芽唇,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望取劫。 院中可真熱鬧匆笤,春花似錦、人聲如沸谱邪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惦银。三九已至咆课,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扯俱,已是汗流浹背书蚪。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留迅栅,地道東北人殊校。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像读存,于是被迫代替她去往敵國和親为流。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內容