淺析Android Broadcast(廣播)

一蹄咖,什么是廣播?

廣播付鹿, 做為Android的四大組件之一澜汤,被用于發(fā)送和接收舵匾,來(lái)自系統(tǒng)或其它app的消息。其設(shè)計(jì)原理徽诲,是基于觀察者模式來(lái)設(shè)計(jì)的吵血,即先訂閱,后接收蹋辅。廣播消息,并不受限于某一個(gè)單一進(jìn)程侦另。因此,它可以用于跨進(jìn)程間的通信淋肾,在多個(gè)App之間傳遞消息。

二拿愧,廣播的分類碌尔。

根據(jù)廣播的訂閱(定義)方式和生命周期,我們可以將廣播歸納為2種類型唾戚,即靜態(tài)廣播與動(dòng)態(tài)廣播。

  • 靜態(tài)廣播
    靜態(tài)注冊(cè)的廣播熊镣,在App被安裝后,就自動(dòng)被系統(tǒng)的PackageManager注冊(cè)保存起來(lái)绪囱。這樣,哪怕你的app鬼吵,沒有在運(yùn)行,你的app也可以接收到廣播齿椅。訂閱這樣一個(gè)廣播,我們需要分2步實(shí)現(xiàn)示辈。第1步涩澡,是創(chuàng)建一個(gè)類坠敷,繼承自BroadcastReceiver。第2步膝迎,是在配置清單文件(AndroidManifest.xml)里面,進(jìn)行配置第1步所創(chuàng)建的類限次。
  1. 創(chuàng)建繼承自BroadcastReceiver的類,代碼如下:
class MyBroadcastReceiver : BroadcastReceiver() {

    override fun onReceive(context: Context, intent: Intent) {
           // 當(dāng)接收到廣播時(shí)费尽,這個(gè)方法會(huì)被調(diào)用羊始,intent參數(shù),包含了廣播所附帶的數(shù)據(jù)突委。
    }
}
  1. 在AndroidManifest.xml里面,配置剛剛定義的類缘缚。這個(gè)<receiver></receiver>標(biāo)簽敌蚜,必須放在<application></application>標(biāo)簽中間,與<activity/>標(biāo)簽同層級(jí)。
<receiver android:name=".MyBroadcastReceiver"  android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <action android:name="android.intent.action.INPUT_METHOD_CHANGED" />
    </intent-filter>
</receiver>

  • 動(dòng)態(tài)廣播
    動(dòng)態(tài)廣播酸舍,是指通過(guò)代碼里初,來(lái)動(dòng)態(tài)訂閱。每一個(gè)動(dòng)態(tài)廣播淮阐,都綁定一個(gè)上下文Context刁品,要么是某個(gè)Activity的泣特,要么是Application的挑随。它的特點(diǎn)是,生命周期只局限于某個(gè)頁(yè)面的生命周期膏孟,亦或是App的生命周期拌汇。當(dāng)綁定廣播的Activity或App被銷毀后,就無(wú)法再接收廣播噪舀。同樣地,訂閱這樣一個(gè)廣播界逛,我們需要分2步走纺座。第1步,是創(chuàng)建一個(gè)類比驻,繼承自BroadcastReceiver,熟悉的配方狈茉,一樣的方式掸掸。第2步蹭秋,創(chuàng)建該類的實(shí)例。
  1. 創(chuàng)建繼承自BroadcastReceiver的類仁讨,代碼如下:
class MyBroadcastReceiver : BroadcastReceiver() {

    override fun onReceive(context: Context, intent: Intent) {
           // 當(dāng)接收到廣播時(shí)实昨,這個(gè)方法會(huì)被調(diào)用,intent參數(shù)丈挟,包含了廣播所附帶的數(shù)據(jù)志电。
    }
}
  1. 創(chuàng)建BroadcastReceiver子類的實(shí)例,代碼如下:
val br: BroadcastReceiver = MyBroadcastReceiver()
  1. 創(chuàng)建IntentFilter挑辆,添加訂閱事件,并注冊(cè)廣播洒嗤。
val filter = IntentFilter()
// 添加要訂閱的廣播事件
filter.addAction(Intent.ACTION_SCREEN_OFF)
// 注冊(cè)廣播
registerReceiver(br, filter)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蚀乔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吉挣,更是在濱河造成了極大的恐慌婉弹,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氯哮,死亡現(xiàn)場(chǎng)離奇詭異商佛,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)肠虽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門玛追,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)闲延,“玉大人韩玩,你說(shuō)我怎么就攤上這事≌彝牵” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵想暗,是天一觀的道長(zhǎng)帘不。 經(jīng)常有香客問(wèn)我,道長(zhǎng)储狭,這世上最難降的妖魔是什么捣郊? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮刮萌,結(jié)果婚禮上娘扩,老公的妹妹穿的比我還像新娘着茸。我一直安慰自己琐旁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布敬特。 她就那樣靜靜地躺著牺陶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪皱炉。 梳的紋絲不亂的頭發(fā)上碱工,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天奏夫,我揣著相機(jī)與錄音历筝,去河邊找鬼。 笑死梳猪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的呛哟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼扫责,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼逃呼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起苏揣,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤推姻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后藏古,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弟跑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哎甲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奈嘿,死狀恐怖吞加,靈堂內(nèi)的尸體忽然破棺而出尽狠,到底是詐尸還是另有隱情叶圃,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布沉馆,位于F島的核電站,受9級(jí)特大地震影響斥黑,放射性物質(zhì)發(fā)生泄漏眉厨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一鹿蜀、第九天 我趴在偏房一處隱蔽的房頂上張望荔燎。 院中可真熱鬧耻姥,春花似錦有咨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至淳衙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間箫攀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工缀雳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梢睛,地道東北人识椰。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓深碱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親莹痢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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