Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
由来:
在上一篇文章有提到getCurrentScore()会对NetworkAgent传过来的值根据当前的networkCapabilities决定是否扣分,而NetworkMonitor正是基于管理网络连接状态而诞生的,它用来检测的网络有效性,当有效是,会将networkCapabilities的状态从无效更新到NET_CAPABILITY_VALIDATED状态
创建:
NetworkMonitor的创建在NetworkAgentInfo()的时候创建
public NetworkAgentInfo(...)
{
//NetworkAgent共生死
networkMonitor = connService.createNetworkMonitor(context, handler, this, defaultRequest);
}
public NetworkMonitor createNetworkMonitor(Context context, Handler handler,
NetworkAgentInfo nai, NetworkRequest defaultRequest) {
return new NetworkMonitor(context, handler, nai, defaultRequest);
}
调用:
NetworkAgent注册时调用updateNetworkInfo():
ConnectivityService.java
private void updateNetworkInfo(NetworkAgentInfo networkAgent, NetworkInfo newInfo) {
//这是网络已经连接上,但是能否连通有待验证
networkAgent.networkMonitor.sendMessage(NetworkMonitor.CMD_NETWORK_CONNECTED);
}
这是NetworkMonitor是处于默认状态的
NetworkMonitor.java
processMessage -> //DefaultState状态
transitionTo(mEvaluatingState) -> //切换到EvaluatingState
enter ->
sendMessage -> //CMD_REEVALUATE,发给自己处理
processMessage