Android基礎(chǔ)-四大組件之Broadcast廣播(使用app專屬的更安全的本地廣播)

Android四大組件分別為:1.活動(dòng)Activity,2.服務(wù)Service,3.廣播接收器Broadcast Receiver,4.內(nèi)容提供器Content Provider

在我之前的博客中寫過廣播的概念與基礎(chǔ)用法,Android基礎(chǔ)-四大組件之Broadcast廣播(基礎(chǔ)).

為什么要用本地廣播?

但是那篇博客只是對廣播的初步了解,案例中發(fā)送的自定義廣播屬于系統(tǒng)全局廣播,即發(fā)出的廣播可以被其他任何app接受到,當(dāng)然我們也可以接受別的app發(fā)送的廣播,但是這就涉及到安全性問題了,萬一廣播里包含一些比較重要的數(shù)據(jù)呢?這樣的廣播容易被其他app獲取,而且之前博客定義過的廣播接收器也會(huì)接收到其他app發(fā)來的對我們沒有用處的垃圾廣播。

總結(jié)就兩點(diǎn):
①傳遞數(shù)據(jù)不安全,容易泄露
②廣播接收器會(huì)接受無用的廣播

為了解決這一問題,就需要使用安卓自帶的本地廣播了。

本地廣播的特點(diǎn)

①本地廣播只能在app內(nèi)部進(jìn)行傳遞——>解決問題一
②廣播接收器只能接受app內(nèi)部發(fā)出的廣播——>解決問題二

也正是因?yàn)榍懊鎯蓚€(gè)特點(diǎn)所以使得本地廣播有了下面這個(gè)特點(diǎn):
③發(fā)送本地廣播比全局廣播效率更高更安全。

除此之外,還有一個(gè)用法上的需要注意的地方:
④本地廣播不能通過靜態(tài)注冊來接收
原因是因?yàn)殪o態(tài)注冊本身是為了讓程序未啟動(dòng)的情況下也能收到廣播,而發(fā)送本地廣播時(shí)程序已經(jīng)啟動(dòng),因此不需要靜態(tài)注冊此功能。

本地廣播的代碼實(shí)現(xiàn)

使用LocalBroadcastManager對廣播進(jìn)行管理,其他寫法基本和之前發(fā)送系統(tǒng)全局廣播是一致的。
具體之前的寫法可參考:
Android基礎(chǔ)-四大組件之Broadcast廣播(基礎(chǔ)).
區(qū)別:
①使用LocalBroadcastManager實(shí)例對象的registerReceiver(myReceiver,intentFilter)方法來注冊本地廣播,
②使用localBroadcastManager實(shí)例對象的sendBroadcast(intent)方法來發(fā)送本地廣播。

舉個(gè)栗子:

        intentFilter = new IntentFilter();
        intentFilter.addAction("myAction");
        myReceiver=new MyReceiver();

//本地廣播
        localBroadcastManager =localBroadcastManager.getInstance(this);
        localBroadcastManager.registerReceiver(myReceiver,intentFilter);//注冊本地廣播
        Intent intent =new Intent("myAction");
        localBroadcastManager.sendBroadcast(intent);

同樣,記得在onDestroy中取消注冊本地廣播。

@Override
    protected void onDestroy() {
        super.onDestroy();
        //取消注冊
        unregisterReceiver(myReceiver);
        //取消注冊本地廣播
        localBroadcastManager.unregisterReceiver(myReceiver);
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容