Android——BroadCastReceiver学习记录

什么是BroadCastReceiver

BroadCastReceiver是Android四大组件之一,为了方便Android系统各个应用程序及程序内部进行通信,Android系统引入了一套广播机制。各个应用程序可以对感兴趣的广播进行注册,当系统或者其他程序发出这条广播的时候,对发出的广播进行注册的程序便能够收到这条广播,经常用做系统通知。

基本广播类型

  • 无序广播
    是一种完全异步执行的广播,在广播发出之后,所有的广播接收器会在同一时间接收到这条广播,广播无法被截断
  • 有序广播
    是一种同步执行的广播,在广播发出之后,优先级高的广播接收器可以优先接收到这条广播,并可以在优先级较低的广播接收器之前截断停止发送这条广播。
    比如有三个广播接收者A, B, C, 优先级是A >B> C。 那这个消息先传给A, 再传给B, 最后传给C。 每个接收者有权终止广播, 比如B终止广播, C就无法接收到。

BroadCastReceiver的注册

  1. 动态注册:代码中进行注册称为动态注册。
    动态注册的广播接收器可以自由的控制注册和取消,有很大的灵活性。其广播接收器的注销是在onDestroy()方法中的,所以广播接收器的生命周期是和当前活动的生命周期一样。

步骤如下 :

  • 实例化自定义的广播接收器。
  • 创建IntentFilter实例。
  • 调用IntentFilter实例的addAction()方法添加监听的广播类型。
  • 最后调用Context的registerReceiver(BroadcastReceiver,IntentFilter)动态的注册广播。
  • 动态注册的广播在活动结束的时候需要取消注册
  1. 静态注册:清单文件中进行注册称为静态注册。

总结:
静态注册的广播不受程序是否启动的约束,当应用程序关闭之后,还是可以接收到广播。 动态注册的广播接收者当注册的Activity或者Service销毁了那么就接收不到广播了。

BroadCastReceiver生命周期

在Android的广播接收机制中,如果需要接收广播,就需要创建广播接收器。而创建广播接收器的方法就是新建一个类继承自BroadcastReceiver,里面会重写onReceive方法

  • 广播接收器的生命周期非常短暂的, 在接收到广播的时候创建, onReceive()方法结束之后销毁
  • 不要在广播里添加过多逻辑或者进行任何耗时操作。因为在广播中是不允许开辟线程的,当onReceive( )方法运行较长时间(超过10秒)还没有结束的话,那么程序会报错, 弹出Application No Response错误对话框;
  • 广播更多的时候扮演的是一个打开其他组件的角色,比如启Service,Notification提示, Activity等;
  • 耗时的较长的工作最好放在服务中完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值