日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于LocalBroadcastManager的介绍和优势

發(fā)布時間:2024/4/17 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于LocalBroadcastManager的介绍和优势 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Android系統(tǒng)中,BroadcastReceiver的設計初衷就是從全局考慮的,可以方便應用程序和系統(tǒng)、應用程序之間、應用程序內的通信,所以對單個應用程序而言BroadcastReceiver是存在安全性問題的,相應問題及解決如下:

1、當應用程序發(fā)送某個廣播時系統(tǒng)會將發(fā)送的Intent與系統(tǒng)中所有注冊的BroadcastReceiver的IntentFilter進行匹配,若匹配成功則執(zhí)行相應的onReceive函數。可以通過類似sendBroadcast(Intent, String)的接口在發(fā)送廣播時指定接收者必須具備的permission。或通過Intent.setPackage設置廣播僅對某個程序有效。

2.? 當應用程序注冊了某個廣播時,即便設置了IntentFilter還是會接收到來自其他應用程序的廣播進行匹配判斷。對于動態(tài)注冊的廣播可以通過類似registerReceiver(BroadcastReceiver, IntentFilter, String, android.os.Handler)的接口指定發(fā)送者必須具備的permission,對于靜態(tài)注冊的廣播可以通過android:exported="false"屬性表示接收者對外部應用程序不可用,即不接受來自外部的廣播。

?


上面兩個問題其實都可以通過LocalBroadcastManager來解決:

??

Android v4 兼容包提供android.support.v4.content.LocalBroadcastManager工具類,幫助大家在自己的進程內進行局部廣播發(fā)送與注冊,使用它比直接通過sendBroadcast(Intent)發(fā)送系統(tǒng)全局廣播有以下幾點好處。

1??? 因廣播數據在本應用范圍內傳播,你不用擔心隱私數據泄露的問題。

2??? 不用擔心別的應用偽造廣播,造成安全隱患。

3??? 相比在系統(tǒng)內發(fā)送全局廣播,它更高效。

其使用方法也和正常注冊廣播類似:

?

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 LocalBroadcastManager mLocalBroadcastManager;? ??BroadcastReceiver mReceiver;? ?IntentFilter filter = newIntentFilter();? ?filter.addAction("test");? <PREclass=java name="code"> mReceiver = newBroadcastReceiver() {? ????????????@Override? ????????????publicvoid onReceive(Context context, Intent intent) {? ????????????????if(intent.getAction().equals("test")) {? ????????????????????//Do Something ????????????????} ????????????}? ????????};? </PRE> mLocalBroadcastManager.registerReceiver(mReceiver, filter); <PRE></PRE> <P></P> <PRE></PRE> 當然,和正常廣播一樣,也要在對應的生命周期中反注冊掉: <P></P> <P></P> <P></P> <PREclass=java name="code">@Override protectedvoid onDestroy() { ???super.onDestroy(); ???mLocalBroadcastManager.unregisterReceiver(mReceiver); } </PRE> <P></P> <PRE></PRE> <PRE></PRE> <PRE></PRE>

總結

以上是生活随笔為你收集整理的关于LocalBroadcastManager的介绍和优势的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。