Android四大组件学习笔记(三)_BroadcastReceiver

BroadcastReceiver & 基础组件

BroadcastReceiver

定义:
  是一个全局的监听器,属于Android四大组件之一
  Broadcast(广播)是一种广泛运用的在应用程序(APP)之间传输信息的机制。而BroadcastReceiver(广播接收器)是对发送出来的Broadcast进行过滤接收并响应的一类组件。

作用:
  监听 / 接收 应用发出的广播消息,并做出响应。

应用场景:

  • Android不同组件间的通信(同一应用内/不同应用内)
  • 多线程通信
  • 与Android系统在特定情况下的通信

在这里插入图片描述
原理描述:

  1. 广播接收者通过Builder机制在AMS注册
  2. 广播发送者通过Builder机制向AMS发送广播
  3. AMS根据广播发送者的要求,在注册列表中查找合适的广播接收者
  4. AMS将广播发送到对应的广播接收者的消息循环队列中
  5. 广播接收者通过消息循环拿到广播,并回调onReceive()

三要素:

  1. Broadcast(广播)——用于发送广播
  2. BroadcastReceiver(广播接收器)——用于接收广播
  3. Intent(意图)——用于保存广播相关信息的媒介

两个重要的步骤:

  • 创建广播接收器
  • 注册广播接收器

生命周期:
在这里插入图片描述
注:BroadcastReceiver生命周期非常短暂,发送广播时创建,onReceive()方法结束之后销毁。

广播类型:

  • 从类型上可分为有序广播和标准广播
  • 从注册方法上可以分为静态注册的广播和动态注册的广播
  • 从发送方式上可以分为普通广播、有序广播、粘性广播、本地广播…
  • 从所属队列上可以分为前台广播、后台广播

Normal Broadcast
在这里插入图片描述

Ordered Broadcast
在这里插入图片描述
  sendOrderedBroadcast(intent , string)
  sendOrderedBroadcast(intent,receivePermission,…)

Foreground / background broadcast
  Intent intent = new Intent();
  intent.setAction(“com.android.thundersoft.xxxxx”);
  // 前台广播(默认是后台广播)
  intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
  sendBroadcast(intent);
注释:前台广播超时时间(BROADCAST_FG_TIMEOUT)是10s,后台广播超时时间(BROADCAST_BG_TIMEOUT)是60s,这里的超时时间是指单个广播接收器可以处理的最大时间。

具体步骤:

  1. 自定义BroadcastReceiver子类,实现onReceiver()方法
  2. 注册广播 / 反注册广播
  3. 发送广播
  4. 添加权限
    注:默认情况下,BroadcastReceiver运行在UI线程上。因此,onReceive()方法不能执行耗时操作(不能超过10s),否则将导致ANR(Application No Response)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值