簡述Android BroadcastReceiver

什么是廣播适贸?

用于監(jiān)聽或接收系統(tǒng)和應(yīng)用發(fā)出的廣播消息愕掏,并做出響應(yīng)物遇,因此廣播分為兩個角色:廣播發(fā)送者俩功、廣播接收者绍傲。

接收廣播的分類

  • 普通廣播:
    使用sendBroadcast()方法發(fā)送扔傅, 他們是完全異步的,廣播的全部接收者以未定義的順序運行烫饼,通常在同一時間猎塞,這種方法非常高效,但是接收者不能使用結(jié)果或者終止API杠纵。
  • 有序廣播:
    使用sendOrderedBroadcast()方法發(fā)送荠耽,他們每次只發(fā)送給一個接收者,由于每個接收者依次運行比藻,它能為下一個接收者生成一個結(jié)果铝量,或者它能完全終止廣播以便不傳遞給其他接收者倘屹,有序接收者運行順序由匹配的intent-filter的android:priority屬性控制,具有相同優(yōu)先級的接收者運行順序隨機慢叨。
  • 系統(tǒng)廣播
  • 粘性廣播

注冊與注銷

BroadcastReceiver的注冊與注銷推薦在OnStart()纽匙、OnStop()中進行。

廣播的注冊機制

  • 靜態(tài)注冊:
    在AndroidManifest.xml中用標(biāo)簽注冊拍谐,并在標(biāo)簽內(nèi)用標(biāo)簽設(shè)置過濾器烛缔。
    靜態(tài)注冊為常駐型廣播,也就是說如果應(yīng)用程序關(guān)閉了轩拨,有相應(yīng)事件觸發(fā)程序還是會響應(yīng)践瓷。

  • 動態(tài)注冊:
    registerReceiver()。
    動態(tài)注冊為非常駐型廣播气嫁,即它會跟隨Activity的生命周期当窗,所以在Activity結(jié)束前我們需要主動撤銷注冊否則會出現(xiàn)異常。

  • 區(qū)別:

    • 靜態(tài)注冊時
      執(zhí)行完onReceive()方法寸宵,BroadcastReceiver對象的生命周期就已經(jīng)到頭了崖面。因此不能在onReceive()中進行異步操作, 有可能異步操作還沒完成,BroadcastReceiver所在的進程就被kill了梯影。同樣巫员,成員變量無法保存它們的值,它們每次都是重新創(chuàng)建的, 之前的已經(jīng)隨著BroadcastReceiver對象被銷毀了.甲棍。 某些情況下(進程不會被kill的)是可以用static變量的简识。

    • 動態(tài)注冊時
      BroadcastReceiver的成員變量是可用的, BroadcastReceiver對象的生命周期是可控的。每次收到廣播都是使用我們registerReceiver()時傳入的對象處理的感猛。 當(dāng)然, 此時靜態(tài)變量也是可用的七扰。

注意:通過這種方式注冊的廣播為非常駐型廣播,即它會跟隨Activity的生命周期陪白,所以在Activity結(jié)束前我們需要調(diào)用unregisterReceiver()方法移除它颈走。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市咱士,隨后出現(xiàn)的幾起案子立由,更是在濱河造成了極大的恐慌,老刑警劉巖序厉,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锐膜,死亡現(xiàn)場離奇詭異,居然都是意外死亡弛房,警方通過查閱死者的電腦和手機道盏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捞奕,你說我怎么就攤上這事牺堰≈羟幔” “怎么了颅围?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長恨搓。 經(jīng)常有香客問我院促,道長,這世上最難降的妖魔是什么斧抱? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任常拓,我火速辦了婚禮,結(jié)果婚禮上辉浦,老公的妹妹穿的比我還像新娘弄抬。我一直安慰自己,他們只是感情好宪郊,可當(dāng)我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布掂恕。 她就那樣靜靜地躺著,像睡著了一般弛槐。 火紅的嫁衣襯著肌膚如雪懊亡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天乎串,我揣著相機與錄音店枣,去河邊找鬼。 笑死叹誉,一個胖子當(dāng)著我的面吹牛鸯两,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播长豁,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼钧唐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蕉斜?” 一聲冷哼從身側(cè)響起逾柿,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宅此,沒想到半個月后机错,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡父腕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年弱匪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡萧诫,死狀恐怖斥难,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情帘饶,我是刑警寧澤哑诊,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站及刻,受9級特大地震影響镀裤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缴饭,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一暑劝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧颗搂,春花似錦担猛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卖丸,卻和暖如春纺且,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背稍浆。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工载碌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人衅枫。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓嫁艇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親弦撩。 傳聞我的和親對象是個殘疾皇子步咪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 面試題總結(jié) 通用 安卓學(xué)習(xí)途徑, 尋找資料學(xué)習(xí)的博客網(wǎng)站 AndroidStudio使用, 插件使用 安卓和蘋果的...
    JingBeibei閱讀 1,658評論 2 21
  • 廣播接收器 是Android的四大組件之一,可見廣播在Android中的重要性益楼; 1. 什么是廣播猾漫? 廣播(Bro...
    Lost_Robot閱讀 1,939評論 2 10
  • 目錄 前言 基礎(chǔ)知識。 1.Android廣播分為兩個方面:廣播發(fā)送者和廣播接收者感凤,通常情況下悯周,Broadcast...
    博兒丶閱讀 856評論 1 2
  • 1.Android廣播機制概述 Android廣播分為兩個方面:廣播發(fā)送者和廣播接收者,通常情況下陪竿,Broadca...
    IT小魔女的故事閱讀 549評論 0 2
  • 4月6號導(dǎo)師會診后禽翼。老大與小伙伴給建議我。先澄清當(dāng)時作選擇時的想法后再作決定。先不要急著行動和選擇闰挡。聽完會診后锐墙,能...
    羽辰在精進閱讀 209評論 0 0