android AsyncChannel机制 --- 单通道连接

本文深入解析Android系统的AsyncChannel机制,重点讨论单通道连接过程。AsyncChannel用于两个Handler间的通信,尤其适用于跨进程场景,如phone进程与ConnectivityService服务的通信。文章详细介绍了连接的四个步骤,包括初始化、发送CMD_CHANNEL_HALF_CONNECTED消息等,并分析了单通道通信的特点,即服务端仅响应客户端请求,不主动发送消息。
摘要由CSDN通过智能技术生成

前言:

AsyncChannel是android系统中的在两个Handler间用于消息传输的机制,这两个Handler可以处于同一个进程,

也可以不再同一个进程。主要用于和网络相关的跨进程通信,例如phone进程和systemserver的ConnectivityService服务,

wifi进程和systemserver的ConnectivityService服务等。

AsyncChannel有两种工作模式:

1、单项通道模式,在该模式下,客户端只能向服务端发起请求,服务端给出回应。

2、双向通道模式,在该模式下,客户端和服务端同时连接上AsyncChannel,客户端可以向服务端发送请求,服务端也

可以向客户端发送请求。

1单通道分析连接过程

单项通道一定有一个是客户端,有一个是服务端,并且客户端可以向服务端发送消息,但是服务端只能响应消息,不能向客户端发送消息。

并且客户端持有AsyncChannel对象,服务端没有。

创建并且连接通道需要4个步骤:

1、获取服务端的Messenger对象(通过服务端的handler对象构造);

2、创建本地的Handler对象;

3、创建AsyncChannel对象,然后调用connect()方法。

4、处理CMD_CHANNEL_HALF_CONNECTED消息。

AsyncChannel是一个很单纯的类,没有继承任何类,定义如下,

public class AsyncChannel {
  

构造方法如下,

public AsyncChannel() {
    }

直接看connecte方法, 调用流程图如下,


Connect方法如下,

public void connect(Context srcContext, Handler srcHandler, Messenger dstMessenger) {
   if (DBG) log("connect srcHandler to the dstMesseng
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值