Hello,朋友們玖详!今天有個朋友突然問我本地廣播與全局廣播的差別把介,特此來總結(jié)一下自己的見解!
一蟋座、本地廣播
首先我們要知道拗踢,為什么使用本地廣播?
本地廣播即LocalBroadcastReceiver向臀,僅在自己的應(yīng)用內(nèi)發(fā)送接收廣播巢墅,也就是只有自己的應(yīng)用能收到,數(shù)據(jù)更加安全廣播只在這個程序里,而且效率更高砂缩!
引入本地廣播的機制主要是為了解決安全性的問題:
1.正在發(fā)送的廣播不會脫離應(yīng)用程序作谚,擔(dān)心app的數(shù)據(jù)泄露;
2.其他的程序無法發(fā)送到自己的應(yīng)用程序內(nèi)部庵芭,不擔(dān)心安全漏洞妹懒。(比如:如何做一個殺不死的服務(wù)---監(jiān)聽火的app 比如微信、友盟双吆、極光的廣播眨唬,來啟動自己。)
3.發(fā)送本地廣播比發(fā)送全局的廣播更高效(全局廣播要維護(hù)的廣播集合表效率更低好乐。全局廣播匾竿,意味著可以跨進(jìn)程,就需要底層的支持蔚万。)
LocalBroadcastReceiver不能靜態(tài)注冊岭妖,只能采用動態(tài)注冊的方式。
LocalBroadcastReceiver使用:
(1)注冊
LocalBroadcastManager.getInstance(this).registerReceiver(new XXXBroadCastReceiver(), new IntentFilter(action));
(2) 取消注冊:
LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver)
二:全局廣播
BroadcastReceiver是針對應(yīng)用間反璃、應(yīng)用與系統(tǒng)間昵慌、應(yīng)用內(nèi)部進(jìn)行通信的一種方式
BroadcastReceiver可以靜態(tài)注冊,也可采用動態(tài)注冊的方式淮蜈。
BroadcastReceiver 使用:
(1)制作intent(可以攜帶參數(shù))
(2)使用sendBroadcast()傳入intent;
(3)制作廣播接收器類繼承BroadcastReceiver重寫onReceive方法
(4)在java中(動態(tài)注冊)或者直接在Manifest中注冊廣播接收器(靜態(tài)注冊)使用registerReceiver()傳入接收器和intentFilter
(5)取消注冊可以在OnDestroy()函數(shù)中斋攀,unregisterReceiver()傳入接收器