Android 数据业务框架分析<一>

  • Post author:
  • Post category:其他



一、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() 的实现如下:
















版权声明:本文为hongkang218原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。