背景
最近面试的时候,面试官问了我一个问题:Broadcast和LocalBroadcast有什么区别?说实话,我已经很多年没有用过广播了,突然一问,确实很是生疏,我当时的回答是Broadcast一般是用来跨进程通信的,比如接受一些系统广播,而LocalBroadcast则是应用内通信的。今天正好有时间好好梳理一下。
区别
首先,二者在机制上就不一样:
- Broadcast是基于Binder的,可以用进行跨进程间的通信,如应用与应用,系统和应用的通信,当然应用内部通信也是可以的。
- LocalBroadcast则是基于Handler的,利用了IntentFilter的match功能,仅可以用来进程内部通信
其次,二者的使用方式也不同:
- Broadcast是支持静态注册和动态注册的,即可以在Manifest里注册也可以在代码中注册
- LocalBroadcast只能动态注册
然而,Android 8.0之后限制了绝大部分广播只能使用动态注册。
优缺点
Broadcast
可以进行跨进程通信,LocalBroadcast
仅可以进行进程内通信,效率更高,也更为安全。
结束语
现在还有多人在用LocalBroadcast
?
评论记录:
回复评论: