Android面试题----Broadcast问题

一、Broadcast

1.定义
运用了观察者模式思维,是一种广泛运用在应用程序之间的传输信息的机制,发送的广播是一个Intent,这个Intent可以携带我们想要的数据。不同程序之间应用程序之间数据共享。

2.广播的使用场景
(1)同一App具有多个进程的不同组件之间的消息通信
(2)不同App的组件之间的通信

3.广播种类
(1)NormalBroadcast Context.sendBroadcast 传给各个符合接受条件的receiver,各个receiver的接收顺序不被保证,广播不能被截获
(2)SystemBroadcast Context.sendOrderedBroadcast 按照优先级高低依次传给receiver,优先级高的可以截获广播,使得优先级低的无法收到广播
(3) Local Broadcast 只在自身App内传播

二、实现广播(receiver)
(1)静态注册:注册完成后就一直在运行
(2)动态注册:跟随Activity的生命周期

三、内部实现机制
注册广播:通过Binder机制,以跨进程方式向AMS进行注册(ActivityManagerService),AMS负责广播注册的真正实现,它会保存远程的Receiver对象IntentFilter对象;
发送广播:广播的发送也是交给AMS来处理的,5.0之后,广播默认不会发给未启动的应用,AMS接收到广播之后,它会根据过滤规则把符合条件的广播接收者保存到BroadcastQueue队列中,然后通过Handler来发送消息,消息循环拿到广播,进行处理,回掉广播接收者的onReceiver方法

四、LocalBroadcastManager详解

1.发送的广播只在app内传播,数据不用被泄露;
2.其他app无法对你app发送广播,接受不到别的app的广播,不会有安全漏洞可以利用;
3.比系统的全局广播更加有效;

通过看源码 可以知道:
内部通过主线程的Hanlder来实现,sendBroadcast是通过handler发送message,与通常意义上的发送广播不一样;
通过handler发送,高效,同时也保证了在应用内使用,其他app无法利用漏洞;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值