Android面试(四):Broadcast面试你所需知道的一切

1. 什么是广播:

在Android中,Broadcast是一种广泛运用在应用程序之间传输信息的机制,Android中我们要发送的广播内容是一个Intent,这个Intent中可以携带我们要传送的数据。Broadcast可以实现不同程序间的数据传输与共享,只要和发送广播action相同的广播接收者,都可以接收到这个广播,也就是说,发送一个广播可以被很多广播接收者接收。

2. 广播的使用场景:

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

3. 广播的种类:

  1. 普通广播:Context.sendBroadcast
  2. 有序广播:Context.sendOrderedBroadcast
  3. 本地广播:只在自身App内传播,由LocalBroadcastManager完成

4. 广播的实现方式:

  1. 静态注册:通过在AndroidManifest清单文件中用<receive>进行注册的,注册完成就一直运行,静态注册的广播即使Activity销毁了,甚至进程被杀死了,还是可以收到广播。
  2. 动态注册:跟随Activity的生命周期,是在代码中调用registerReceiver来进行注册的,会随着Actvity的销毁而销毁。

5. 广播的实现机制:

  1. 自定义广播接收者BroadcastReceiver,并复写onReceive方法;
  2. 通过Binder机制向AMS(Activity Manager Service)进行注册;
  3. 广播发送者通过Binder机制向AMS发送广播;
  4. AMS查找符合相应条件(IntentFilter / Permission等)的BroadcastReceiver,将广播发送到BroadcastReceiver(一般情况下是Activity)相应的消息循环队列中;
  5. 消息循环执行拿到此广播,回调BroadcastReceiver中的onReceive方法。

6. LocalBroadcastManager详解:

  1. 使用它发送的广播将只在自身App内传播,因此你不必担心泄漏隐私数据
  2. 其它App无法对你的App发送该广播,因为你的App根本就不可能接收到非自身应用发送的该广播,因此你不必担心有安全漏洞可以利用
  3. 比系统的全局广播更加高效
  4. LocalBroadcastManager高效的原因主要是因为它内部是通过Handler实现的,它的sendBroadcast方法含义并非和我们平时所用的一样,它的sendBroadcast方法其实是通过handler发送一个Message实现的。
  5. 既然它内部是通过Handler来实现广播的发送的,那么相比于系统广播通过Binder实现那肯定是更高效了,同时使用Handler来实现,别的应用无法向我们的应用发送该广播,而我们应用内发送的广播也不会离开我们的应用。

喜欢本篇博客的简友们,就请来一波点赞,您的每一次关注,将成为我前进的动力,谢谢!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,Broadca...
    IT小魔女的故事阅读 607评论 0 2
  • 【Android 广播】 BroadcastReceiver简介 BroadcastReceiver(广播接收器)...
    Rtia阅读 3,548评论 1 17
  • 诸多无奈,最近在改一个项目的bug的时候,脑子老是一片空白,可能是最近脑子不够用,总之,好多东西忘了,阅读一些别人...
    狗子王1948阅读 7,830评论 6 53
  • 广播接收器 是Android的四大组件之一,可见广播在Android中的重要性; 1. 什么是广播? 广播(Bro...
    Lost_Robot阅读 2,042评论 2 10
  • 前言 本来想写一下广播的,发现查阅后有整理的不错的,只好转载图个简便,日后好复习转载:http://www.cnb...
    提升即效率阅读 1,454评论 0 10

友情链接更多精彩内容