APP开发实战72-广播机制概述

本文介绍了Android的广播机制,包括广播发送者和接收者,以及它们在App组件间通信的应用场景。广播使用观察者模式实现,使得发送者和接收者解耦。流程包括BroadcastReceiver向AMS注册、发送者通过AMS发送广播、AMS匹配接收者并调用onReceive()方法。广播的执行是异步的,不依赖接收者的实时响应。

18 Broadcast介绍

(转自; http://www.cnblogs.com/lwbqqyumidi/p/4168017.html)

18.1广播机制概述

Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景如下:
(1)同一App内部的同一组件内的消息通信(单个或多个线程之间);

(2)同一App内部的不同组件之间的消息通信(单个进程);

(3)同一App具有多个进程的不同组件之间的消息通信;

(4)不同App之间的组件之间消息通信;

(5)Android系统在特定情况下与App之间的消息通信。

从实现原理看上,Android中的广播使用了观察者模式,基于消息的发布/订阅事件模型。因此,从实现的角度来看,Android中的广播将广播的发送者和接受者极大程度上解耦,使得系统能够方便集成,更易扩展。

具体实现流程要点粗略概括如下:

(1)广播接收者BroadcastReceiver通过Binder机制向AMS(ActivityManager Service)进行注册。

(2)广播发送者通过binder机制向AMS发送广播。

(3)AMS查找符合相应条件(IntentFilter/Permission等)的BroadcastReceiver,将广播发送到BroadcastReceiver(一般情况下是Activity)相应的消息循环队列中。

(4)消息循环执行拿到此广播,回调BroadcastReceiver中的onReceive()方法。

     对于不同的广播类型,以及不同的BroadcastReceiver注册方式,具体实现上会有不同。但总体流程大致如上。

广播发送者和广播接收者分别属于观察者模式中的消息发布和订阅两端,AMS属于中间的处理中心。广播发送者和广播接收者的执行是异步的,发出去的广播不会关心有无接收者接收,也不确定接收者到底是何时才能接收到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值