Android基础 -- Android广播机制

Android的广播机制,在实际应用的也是常客,这边博客将和大家一起分享有关于Android广播的这些事。

 

什么是广播?

广播是一个全局监听器,属于Android四大组件之一,分为广播接收者和广播发送者。

 

广播有什么作用?

通用用来接收系统或者应用发送的消息,并作出响应

 

广播有哪些应用场景?

进程间通信、多线程通信、App内部通信、与系统的通信等等

 

Android是如何实现的广播的?

首先广播采用观察者模式,不熟悉观察者模式的小伙伴可以先看看观察者模式,使用观察者模式的好处是使发送者和观察者解耦,方便拓展。

在广播机制中,主要有三个角色,分别是消息订阅者(广播发送者)、消息发布者(广播发布者)和消息中心(AMS:ActivityManagerService)

一个完整的广播流程可以分为五步:

第一步:广播接收者,通过Binder机制在AMS注册

第二步:广播发送者,通过Binder机制向AMS发送广播

第三步:AMS根据广播发送者的要求,在自己的注册列表中,寻找合适的广播接收者(IntentFilter/Permission)

第四步:AMS将广播发送到合适的广播接收者相应的消息循环列表中

第五步:广播接收者通过消息循环拿到此广播,并回调onRecive()

这里需要注意的是,广播放送者和广播接收者的执行是异步的,即广播发送者不会关心有无接收者,同时也不确定接收者何时才能收到广播

 

代码实现

1.接收

继承BroadcastRecieve基类以及重写onRecive方法

在收到广播后,会回调onRecive方法,一般情况下,onRecive方法会涉及与其他组件之间的交互,如发送Notification、启动Service等,而且广播接收器运行在UI线程,所以不能执行耗时操作,以免触发ARN

示例代码

// 继承BroadcastReceivre基类
public class mBroadcastReceiver extends BroadcastReceiver {

  // 复写onReceive()方法
  // 接收到广播后,则自动调用该方法
  @Override
  public void onReceive(Context context, Intent intent) {
   //写入接收广播后的操作
    }
}

2.注册

注册方式分为静态注册和动态注册两种

需要注意的是,大部分静态注册在8.0以后是不能使用的,但是为了知识的完整性,这里还是会介绍静态注册的方法,关于静态注册的变更,可以查看文档

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值