• 四,Broadcast面试详解
      • 1,广播定义
      • 2,广播使用场景
      • 3,广播的种类
      • 4,广播的注册
      • 5,内部实现机制
      • 6,LocalBroadcastManager详解

四,Broadcast面试详解

1,广播定义

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

2,广播使用场景

参考自:https://www.cnblogs.com/lwbqqyumidi/p/4168017.html
1.同一app内部的同一组件内的消息通信(单个或多个线程之间);(可用handler解决

2.同一app内部的不同组件之间的消息通信(单个进程);(可用EventBus)

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

4.不同app之间的组件之间消息通信;

5.Android系统广播在特定情况下与App之间的消息通信。

后三种常用广播解决

3,广播的种类

参考自:https://blog.csdn.net/carson_ho/article/details/53160580

  • 普通广播(Normal Broadcast)
  • 系统广播(System Broadcast)
  • 有序广播(Ordered Broadcast)
  • 粘性广播(Sticky Broadcast)
  • App应用内广播(Local Broadcast)

4,广播的注册

参考自:https://blog.csdn.net/u012702547/article/details/46955787

  • 静态注册:注册完成就一直运行
  • 动态注册:跟随activity的生命周期

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详解

具体说明 https://blog.csdn.net/carson_ho/article/details/53160580

  • 高效性,比系统的全局广播更高效
  • 安全性,只在自身app内传播,不必担心信息泄露

源码分析

  • LocalBroadcastManager高效的原因主要是因为内部是通过Handler发送message实现的,它的sendBroadcast方法含义和我们平时所用的不一样。
  • 既然是Handler实现的,所以相比系统广播通过Binder实现更高效,同时使用Handler实现,也使广播控制在应用内部,不会发出去也不会被攻击。
  • LocalBroadcastManager内部协作主要是靠这两个Map集合:mReceivers和mActions,当然还有一个List集合mPendingBroadcasts,这个主要是存储待接收的广播对象

更多相关文章

  1. Android(安卓)监听短信(同时监听广播和数据库)
  2. Android之入门:多线程更新UI界面
  3. android WebView的使用详解
  4. Android(安卓)客服端集成高德定位功能(Android(安卓)studio图文详
  5. android图形系统详解:View layer
  6. Android学习之Handler使用小结
  7. Android(安卓)消息机制学习
  8. Android服务器推送之GCM
  9. Unity3D 与Android(安卓)相互传递消息

随机推荐

  1. 苹果悄悄进入企业级市场,iOS起飞,Android折
  2. repo 和 git 管理源代码
  3. Android带进度条的下载图片示例(AsyncTask
  4. android不将apk包编译到系统里的方法
  5. java for android sqlite数据的操作:说实
  6. Android面试题(基础部分1)
  7. Android(安卓)第四天(晚上)
  8. 创建Gridview视图
  9. Android的merge标签用法
  10. android:activity生命周期及几个主要函数