四大组件之BroadcastReceiver

一、什么是BroadcastReceiver?

BroadcastReceiverAndroid中用处较大的异步消息机制。它有轻量和跨进程的性质。一个BroadcastReceiver对象的生命周期不超过5秒,不能绑定服务和做一些耗时的操作,但是用来收发信号和消息则戳戳有余。系统也经常有BroadcastReceiver发送消息

二、BroadcastReceiver如何使用呢?

首先在需要发送信息的地方,把要发送的信息和用于过滤的信息(ActionCategory)装入一个Intent对象,然后通过调用 sendOrderBroadcast()sendStickyBroadcast()或者sendBroadcast()方法,通过动态或者静态的方式在AndroidManifest注册广播并设置过滤器,把 Intent对象以广播方式发送出去,需要注意的是在sendStickyBroadcast时,需要在AndroidManifest里注册声明使用权限:android.permission.BROADCAST_STICKY

Intent发送以后,所有已经注册的BroadcastReceiver会检查注册时的IntentFilter是否与发送的Intent 相匹配,若匹配则就会调用BroadcastReceiveronReceive()方法。所以当我们定义一个BroadcastReceiver的时 候,都需要实现onReceive()方法。

普通广播:

普通广播对于多个接收者来说是完全异步的,通常每个接收者都无需等待即可以接收到广播,接收者相互之间不会有影响。对于这种广播,接收者无法终止广播,即无法阻止其他接收者的接收动作。

有序广播:

有序广播比较特殊,它每次只发送到优先级较高的接收者那里,然后由优先级高的接受者再传播到优先级低的接收者那里,优先级高的接收者有能力终止这个广播。

三、注册BroadcastReceiver有两种方式:

静态注册

AndroidManifest.xml中用标签生命注册,并在标签内用标签设置过滤器。

  <receiver android:name="xxx.yyy.zzz">    //继承BroadcastReceiver,重写onReceiver方法

    <intent-filter>    

      <action android:name="aaa.bbb.ccc"></action> //使用过滤器,接收指定action广播

      </intent-filter>

  </receiver> 

动态注册:

IntentFilter intentFilter = new IntentFilter();

intentFilter.addAction(“aaa.bbb.ccc”);   //BroadcastReceiver指定action,使之用于接收同action的广播

 registerReceiver(BroadcastReceiver,intentFilter);


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值