Android 数据业务框架分析

一、Android 网络整体结构


Android网络结构中,在底层提供两种虚拟接口:

1)Command命令通道:建立或断开网络连接

2)Data数据通道:基于TCP/IP网络通信协议的数据传输

本文重点关注Command命令通道,与CallTracker、ServiceStateTracker类似。


二、DataConnection类

DataConnection(数据连接)在Telephony Frameworks层中用来管理手机上网连接。

一个DataConnection对象代表手机上网的一个数据连接,Android源码中最大支持9个数据连接类型,但数据连接在同一时刻仅有一个是有效的。类图如下:


如上,定义6个内部类:

DcDefaultState:默认状态定义

DcInactiveState:不活动的状态定义

DcRetryingState:重新请求的状态定义

DcActivatingState:正在激活的状态定义

DcActiveState:活动中的状态定义

DcDisconnectionState:正在断开的状态定义

分别实现3个接口:

enter() :在状态转换时,进入此状态的操作

exit() :在状态转换时,退出此状态的操作

processMessage() :此状态的Handler消息处理


类关键方法:

onConnect(ConnectionParams cp) 激活数据连接:


1)初始化变量,如mLastFailCause

2)获取authType、protocol 参数

3)调用setupDataCall() 发起数据连接


setupDataCall() 发起数据连接:


1)根据判断,调用mCi.setupDataCall,即Ril.java 的setupDataCall接口


2)getRilDcArbitrator() 返回 IRilDcArbitrator 接口,该接口实现 PS 通话业务的功能,函数在实现该接口的类DefaultRilDcArbitrator中实现

IRilDcArbitrator 接口中定义:


DefaultRilDcArbitrator类中的实现:


mPsCi 是 CommandsInterface 接口的对象;

BaseCommands 类实现 CommandsInterface 接口,BaseCommands implements CommandsInterface;

SimulatedCommands 类继承 BaseCommands ,SimulatedCommands extends BaseCommands; 

mPsCi.setupDataCall() 的实现如下:


unimplemented() 的实现如下:








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章