2数据业务打开
DcTracker的onTrySetupData调用流程图如下,
onTrySetupData方法如下,
protected boolean onTrySetupData(String reason) {
if (DBG) log("onTrySetupData: reason=" + reason);
setupDataOnConnectableApns(reason);//利用可连接的APN进行拨号
return true;
}
setupDataOnConnectableApns方法如下,
private void setupDataOnConnectableApns(String reason) {
setupDataOnConnectableApns(reason, RetryFailures.ALWAYS);
}
这里RetryFailures.ALWAYS表示连网失败话,会一直重试。
trySetupData主要根据当前终端的运行状态,判断框架是否应该继续拨号。
setupData主要逻辑如下,
1,首先根据一些列的条件进行判断,然后创建一个DataConnection对象,
if (dcac == null) {
dcac = createDataConnection();
}
2,创建成功后,更新状态,
apnContext.setDataConnectionAc(dcac);
apnContext.setApnSetting(apnSetting);
apnContext.setState(DctConstants.State.CONNECTING);
mPhone.notifyDataConnection(apnContext.getReason(), apnContext.getApnType());
Message msg = obtainMessage();
msg.what = DctConstants.EVENT_DATA_SETUP_COMPLETE;
msg.obj = apnContext;
//调用DcAsyncC