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() 的實現如下:








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