知识总结------Broadcast

一、广播种类

普通广播:Context.sendBroadcast

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

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

二、实现广播

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

<receiver android: name =“Receiver1”>

     <intent-filter>

         <!----Intent中的action对应--->

         <actionandroid: name=“com.forrest.action.mybroadcast”/>

     </intent-filter>

</receiver>

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

1 IntentFilter filter = new IntentFilter(“com.forrest.action.mybroadcast”);//和广播中Intentaction对应;

2 MyBroadcastReceiver br= new MyBroadcastReceiver();

3 registerReceiver(br, filter);

 

三、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实现,因此LocalBroadcastManagerHandler机制更高效,而且发送消息也不会离开App内部。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值