Android詳解廣播

廣播分兩類:

▲標準廣播:完全異步執(zhí)行的廣播G匦А!涎嚼!幾乎所有的廣播接收器都會同時接收到這條廣播消息阱州,沒有先后順序可言。
優(yōu)點:效率高法梯;
缺點:無法被截斷苔货。
▲有序廣播:同步執(zhí)行的廣播!A⒀啤蒲赂!廣播發(fā)出后,同一時刻只會有一個廣播接收器能夠收到這條廣播消息刁憋,當這個廣播接收器邏輯處理完了,才會繼續(xù)傳遞廣播木蹬。所以他是分先后順序的至耻,優(yōu)先級高的接收器會先收到廣播。
優(yōu)點:可截斷镊叁,后面的廣播接收器就收不到廣播了尘颓;
缺點:效率低,一個一個處理晦譬。

例如:

開機后:系統(tǒng)會在執(zhí)行finishBooting函數(shù)時發(fā)送一條廣播疤苹,值為android.intent.action.BOOT_COMPLETED的廣播。

自己發(fā)送和接收廣播:

標準廣播:

▲發(fā)送標準廣播:其實很簡單敛腌,只需要初始化一個Intent,然后sendBroadcast就行了

Intent intent = new Intent("com.czb.broadcast_test.MY_BROADCAST");
sendBroadcast(Intent);

▲想要接收自己發(fā)的廣播也很簡單:
新建一個BroadcastReceiver卧土,
繼承BroadcastReceiver并重寫onReceive(Context var1, Intent)
在Manifest里面加<intent-fliter>表明想接收的廣播的值

<receiver
            android:name=".MyReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.czb.broadcast_test.MY_BROADCAST" />
            </intent-filter>
</receiver>

然后intent.getAction();就可以接收到廣播的值了惫皱,intent.getExtra("msg");接收Intent里面存的數(shù)據(jù)。

有序廣播:

▲發(fā)送有序廣播:也很簡單尤莺,改一行代碼就可以:

Intent intent = new Intent("com.czb.broadcast_test.MY_BROADCAST");
sendOrderedBroadcast(Intent旅敷,null);

▲接收有序廣播:其實和接收標準廣播的區(qū)別不大:
1.可以識別BroadcastReceiver的優(yōu)先級;
2.可以截斷廣播颤霎。
先在Manifest里面加一句來設(shè)置優(yōu)先級
這里我設(shè)置的是最高優(yōu)先級100

<intent-filter android:priority=100>
                <action android:name="com.czb.broadcast_test.MY_BROADCAST" />
</intent-filter>

然后在標準廣播的接收器改一下就可以接收并截斷廣播了;
onReceive里面加一句abortBroadcast();就可以截斷廣播了

本地廣播:

只能在應(yīng)用程序內(nèi)部發(fā)送和接收廣播
這個就稍復(fù)雜一點了媳谁,需要借助LocalBroadcastManager

LocalBroadcastManager lbm = new LoadBroadcastManager.getInstance(this);
Intent intent = new Intent("com.czb.broadcast_test.MY_BROADCAST")
lbm.sendBroadcast(intent);

接收本地廣播:

LocalBroadcastManager lbm = new LoadBroadcastManager.getInstance(this);
...
LocalReceiver lr = new LocalReceive();
Intentfilter intentfliter = new Intentfliter("com.czb.broadcast_test.MY_BROADCAST");
lbm.registerReceiver(lr, intentfliter);//注冊本地廣播監(jiān)聽器

class LocalReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context, "received local broadcast", Toast.LENGTH_SHORT).show();
        }
}

@Override
protected void onDestroy() {
        super.onDestroy();
//        unregisterReceiver(networkChangeReceiver);
        localBroadcastManager.unregisterReceiver(localReceiver);
}

這里寫了一個內(nèi)部類作為本地廣播接收器,而且我們這次沒有在Manifest里面寫receiver,而是動態(tài)注冊的廣播接收器;
這種方法也適用于注冊標準廣播接收器和有序廣播接收器,方法類似,不再贅述。
▲本地廣播接收器的優(yōu)勢:
1.明確知道正在發(fā)送的廣播不會離開我們的程序友酱,因此不必擔心信息泄露晴音;
2.其他程序也沒辦法給我們的程序發(fā)送廣播,沒有安全隱患缔杉;
3.本地廣播比一開始說的兩種廣播(系統(tǒng)全局廣播)更加高效锤躁。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市壮吩,隨后出現(xiàn)的幾起案子进苍,更是在濱河造成了極大的恐慌,老刑警劉巖鸭叙,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件觉啊,死亡現(xiàn)場離奇詭異,居然都是意外死亡沈贝,警方通過查閱死者的電腦和手機杠人,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宋下,“玉大人嗡善,你說我怎么就攤上這事⊙纾” “怎么了罩引?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長枝笨。 經(jīng)常有香客問我袁铐,道長,這世上最難降的妖魔是什么横浑? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任剔桨,我火速辦了婚禮,結(jié)果婚禮上徙融,老公的妹妹穿的比我還像新娘洒缀。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布树绩。 她就那樣靜靜地躺著萨脑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪葱峡。 梳的紋絲不亂的頭發(fā)上砚哗,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天,我揣著相機與錄音砰奕,去河邊找鬼蛛芥。 笑死,一個胖子當著我的面吹牛军援,可吹牛的內(nèi)容都是我干的仅淑。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼胸哥,長吁一口氣:“原來是場噩夢啊……” “哼涯竟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起空厌,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤庐船,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后嘲更,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體筐钟,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年赋朦,在試婚紗的時候發(fā)現(xiàn)自己被綠了篓冲。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡宠哄,死狀恐怖壹将,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情毛嫉,我是刑警寧澤诽俯,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站承粤,受9級特大地震影響惊畏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜密任,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望偷俭。 院中可真熱鬧浪讳,春花似錦、人聲如沸涌萤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至透揣,卻和暖如春济炎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辐真。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工须尚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人侍咱。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓耐床,卻偏偏與公主長得像,于是被迫代替她去往敵國和親楔脯。 傳聞我的和親對象是個殘疾皇子撩轰,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

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