解释TelephonyNetworkFactory中关于评分的部分.

1.下面是TelephonyNetworkFactory中一些关键的方法和属性,主要关注下AsyncChannel里面的mSrcHandler,mSrcMessenger,mDstMessenger.

2.下面流程中主要关注一些属性变化.

mNetworkFactoryInfos 主要是在申请注册NetwrokFactory的时候添加

mNetworkFactoryInfos 主要是在申请注册NetwrokFactory的时候添加
private final HashMap<Messenger, NetworkFactoryInfo> mNetworkFactoryInfos =
new HashMap<Messenger, NetworkFactoryInfo>();

private void handleRegisterNetworkFactory(NetworkFactoryInfo nfi) {
    if (DBG) log("Got NetworkFactory Messenger for " + nfi.name);
    mNetworkFactoryInfos.put(nfi.messenger, nfi);
    nfi.asyncChannel.connect(mContext, mTrackerHandler, nfi.messenger);
}

`mNetworkRequests 主要是在

1.ConnectivityService初始化的时候添加默认的default request

2.当通过ConnectivityManager来requestnetwork的时候添加(申请建立数据业务).

private final HashMap<NetworkRequest, NetworkRequestInfo> mNetworkRequests =

new HashMap<NetworkRequest, NetworkRequestInfo>();

1.ConnectivityService初始化的时候添加默认的default request

mNetworkRequests.put(mDefaultRequest, defaultNRI);

2.当通过ConnectivityManager来requestnetwork的时候添加(申请建立数据业务)..

private void handleRegisterNetworkRequest(NetworkRequestInfo nri) {

mNetworkRequests.put(nri.request, nri);

mNetworkRequestInfoLogs.log("REGISTER " + nri);

if (nri.request.isListen()) {

for (NetworkAgentInfo network : mNetworkAgentInfos.values()) {

if (nri.request.networkCapabilities.hasSignalStrength() &&

network.satisfiesImmutableCapabilitiesOf(nri.request)) {

updateSignalStrengthThresholds(network, "REGISTER", nri.request);

}

}

}

rematchAllNetworksAndRequests(null, 0);

if (nri.request.isRequest() && mNetworkForRequestId.get(nri.request.requestId) == null) {

sendUpdatedScoreToFactories(nri.request, 0);

}

}

mNetworkForRequestId 主要是在数据业务建立成功后进行添加.

private final SparseArray<NetworkAgentInfo> mNetworkForRequestId =

new SparseArray<NetworkAgentInfo>();

private void handleRegisterNetworkAgent(NetworkAgentInfo na) {

if (VDBG) log("Got NetworkAgent Messenger");

mNetworkAgentInfos.put(na.messenger, na);

synchronized (mNetworkForNetId) {

mNetworkForNetId.put(na.network.netId, na);

}

na.asyncChannel.connect(mContext, mTrackerHandler, na.messenger);

NetworkInfo networkInfo = na.networkInfo;

na.networkInfo = null;

updateNetworkInfo(na, networkInfo);

}

results matching ""

    No results matching ""