美文网首页
Broadcast面试详解

Broadcast面试详解

作者: 程序猿BOSS | 来源:发表于2017-10-20 11:14 被阅读16次

    1、定义

    在Androdi中,Broadcast是一种广泛运用的在应用程序之间传递消息的机制,Android中我们要发送的广播内容是一个Intent,这个Intent中可以携带我们要传输的数据。

    2、广播的使用场景

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

    2.2不同App之间的组件之间的消息通信

    3、广播种类

    无序广播:Normal Broadcast Context.sendBroadcast

    有序广播:System Broadcast Context.sendOrderedBroadcast

    本地广播:自在自身App内传播

    4、实现注册

    静态注册:注册完就一直运行

    动态注册:跟随Activity的生命周期

    5、内部实现机制

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

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

    广播发送者通过Binder机制向AMS发送广播;

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

    消息循环执行拿到此广播,回调BroadcastReceiver中的onRecvice()方法。

    6、LocalBroadcastManager详解

    6.1使用它发送的广播只在自身App内传播,因此你不必担心泄露隐私数据

    6.2其他App无法对你的App发送该广播,因为你的App根本就不可能接收到非自身应用发送的该广播,因此你不必担心有安全漏洞可以利用。

    6.3比系统的全局广播更加高效

    6.4LocalBroadcastManager高效的原因主要是因为它内部是通过Handler实现的,它的sendBroadcast()方法含义并非和我们平时所使用的一样,它的sendBroadcast()方法其实是通过Handler发送一个Message实现的

    6.5既然它内部是通过Handler来实现广播的发送的,那么相比于系统广播通过Binder实现那肯定是更高效了,同时使用Handler来实现,别的应用无法向我们的应用发送该广播,而我们应用内发送的广播也不会离开我们的应用

    6.6LocalBroadcastManager内部协作主要是靠这两个Map集合:mReceivers和mActions,当然还有一个List集合mPendingBroadcasts,这个主要是存储待接收的广播对象。

    相关文章

      网友评论

          本文标题:Broadcast面试详解

          本文链接:https://www.haomeiwen.com/subject/impmuxtx.html