面试总结之广播机制

定义

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

使用方法

1.定义广播接收者

public class MyReceiver extends BroadcastReceiver{
   public void onReceiver(Context context,Intent intent)
   {
   String action intent.getAction();
   //do some works
   }
}

2.注册广播接收者
注:一般情况下,如果动态广播和静态广播同时发出,最先收到的广播是来自于动态注册的广播,动态注册的接收者会先执行。
静态注册

<receiver android name=".MyReceiver">
	<intent-filter>
		<action android:name="com.ryg.recriver.LAUNCH"/>
	</intent-filter>
</receiver>	

动态注册
注:动态注册需要进行解注册操作,静态操作就不需要。

IntentFilter filter = new IntentFilter();
filter.addAction("com.ryg.receiver.LAUNCH");
registerReceiver(new MyReceiver(),filter);

3.发送广播

Intent intent = new Intent();
intent.setAction("com.ryg.receiver.LAUNCH");
sendBroadcast(intent);

分类

无序广播

context.sendBroadcast(Intent)方法发送的广播,不可被拦截,当然发送的数据,接收者是不能进行修改的。

有序广播

context.sendOrderBroadcast(Intent)方法发送的广播,可被拦截,而且接收者是可以修改其中要发送的数据,修改和添加都是可以的,这就意味着优先接收者对数据修改之后,下一个接收者接受的数据是上一个接收者已经修改了的,这必须明白。

本地广播

localBroadcastManager.sendBroadcast(Intent),只在app内传播。

系统广播&本地广播

系统广播分析

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

本地广播分析

相比于系统广播而言,本地广播更加安全,更加高效,
以下是本地广播的特点以及内部的实现机制:特点:
  a.使用它发送的广播将只在自身app内传播,因此你不必担心泄漏隐私的数据。
  b.其他app无法对你的app发送该广播,因此你的app根本不可能收到非自身app发送的该广播,因此你不必担心有安全漏洞可以利用。
  c.比系统广播更加高效。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值