Hello,朋友们!今天有个朋友突然问我本地广播与全局广播的差别,特此来总结一下自己的见解!
一、本地广播
首先我们要知道,为什么使用本地广播?
本地广播即LocalBroadcastReceiver,仅在自己的应用内发送接收广播,也就是只有自己的应用能收到,数据更加安全广播只在这个程序里,而且效率更高!
引入本地广播的机制主要是为了解决安全性的问题:
1.正在发送的广播不会脱离应用程序,担心app的数据泄露;
2.其他的程序无法发送到自己的应用程序内部,不担心安全漏洞。(比如:如何做一个杀不死的服务---监听火的app 比如微信、友盟、极光的广播,来启动自己。)
3.发送本地广播比发送全局的广播更高效(全局广播要维护的广播集合表效率更低。全局广播,意味着可以跨进程,就需要底层的支持。)
LocalBroadcastReceiver不能静态注册,只能采用动态注册的方式。
LocalBroadcastReceiver使用:
(1)注册
LocalBroadcastManager.getInstance(this).registerReceiver(new XXXBroadCastReceiver(), new IntentFilter(action));
(2) 取消注册:
LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver)
二:全局广播
BroadcastReceiver是针对应用间、应用与系统间、应用内部进行通信的一种方式
BroadcastReceiver可以静态注册,也可采用动态注册的方式。
BroadcastReceiver 使用:
(1)制作intent(可以携带参数)
(2)使用sendBroadcast()传入intent;
(3)制作广播接收器类继承BroadcastReceiver重写onReceive方法
(4)在java中(动态注册)或者直接在Manifest中注册广播接收器(静态注册)使用registerReceiver()传入接收器和intentFilter
(5)取消注册可以在OnDestroy()函数中,unregisterReceiver()传入接收器