(四)Broadcast面试问题

一、Broadcast广播

1.广播的定义

类似观察者模式,当数据变化时会通知观察者对相应的数据进行处理。在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制,Android中我们要发送的广播内容是一个Intent,这个Intent中可以携带我们要传送的数据。可以通过广播接收Service传来的消息,不用直接让Activity和Service交互。

2.广播的使用场景

A.同一个App具有多个进程的不同组件之间的消息通信。

B.不同App之间的组件之间消息通信。

3.广播种类

  1. 普通广播:Context.sendBroadcast。

  2. 系统广播(有序广播):Context.sendOrderedBroadcast。

  3. 本地广播:只在自身App内传播。
    </br>

二、实现广播

1.静态注册:在Manifest.xml中注册完成就一直运行,App关闭了也不受影响。

2.动态注册:在代码中注册,跟随Activity的生命周期。

三、Broadcast内部实现机制

1.自定义广播接收者BroadcastReceiver,并复写onRecvice()方法。

2.通过Binder机制向AMS(Activity Manager Service)进行注册。

3.广播发送者通过Binder机制向AMS发送广播。

4.AMS查找符合相应条件(IntentFilter/Permission等)的BroadcastReceiver,将广播发送到BroadcastReceiver(一般是Activity)相应的消息循环队列中。

5.消息循环拿到此广播,回调BroadcastReceiver中的onReceive()方法。

四、LocalBroadcastManager详解

1.使用它发送的广播将只在自身App内传播,不用担心泄漏隐私数据。

2.其他App无法对你的App发送该广播,因为App根本就不可能接收到非自身应用发送的该广播。

3.比系统的全局广播更加高效。

4.LocalBroadcastManager高效的原因是因为它内部使用了Handler发送Message来实现。

5.系统广播通过Binder实现,因此LocalBroadcastManager的Handler机制更高效,而且发送消息也不会离开App内部。

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

推荐阅读更多精彩内容