面试题:Broadcast和LocalBroadcast有什么区别

背景

最近面试的时候,面试官问了我一个问题:Broadcast和LocalBroadcast有什么区别?说实话,我已经很多年没有用过广播了,突然一问,确实很是生疏,我当时的回答是Broadcast一般是用来跨进程通信的,比如接受一些系统广播,而LocalBroadcast则是应用内通信的。今天正好有时间好好梳理一下。

区别

首先,二者在机制上就不一样:

  • Broadcast是基于Binder的,可以用进行跨进程间的通信,如应用与应用,系统和应用的通信,当然应用内部通信也是可以的。
  • LocalBroadcast则是基于Handler的,利用了IntentFilter的match功能,仅可以用来进程内部通信

其次,二者的使用方式也不同:

  • Broadcast是支持静态注册和动态注册的,即可以在Manifest里注册也可以在代码中注册
  • LocalBroadcast只能动态注册

然而,Android 8.0之后限制了绝大部分广播只能使用动态注册。

优缺点

Broadcast可以进行跨进程通信,LocalBroadcast仅可以进行进程内通信,效率更高,也更为安全。

结束语

现在还有多人在用LocalBroadcast?

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容