本文主要是介绍网络连接评分机制之NetworkMonitor(原),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本节介绍一个比较特殊的流程,就是网络可用性对评分的影响。该影响主要体现在,当一个网络连接建立时,系统将用该连接Ping一个Google的网站来判断该连接是否真的可以上网,如果不可以,那么就会扣掉该网络40分,从而可能导致该网络的评分低于其他网络评分,下面来看详细过程。
一、NetworkMonitor来源
@ConnectivityService.javapublic void registerNetworkAgent(Messenger messenger, NetworkInfo networkInfo, LinkProperties linkProperties, NetworkCapabilities networkCapabilities, int currentScore, NetworkMisc networkMisc) {//注册NetworkAgent时需要创建NetworkAgentInfoNetworkAgentInfo nai = new NetworkAgentInfo(messenger, new AsyncChannel(),new NetworkInfo(networkInfo), new LinkProperties(linkProperties),new NetworkCapabilities(networkCapabilities), currentScore, mContext, mTrackerHandler,new NetworkMisc(networkMisc));synchronized (this) {nai.networkMonitor.systemReady = mSystemReady;}mHandler.sendMessage(mHandler.obtainMessage(EVENT_REGISTER_NETWORK_AGENT, nai));}
这就是我们所说的注册NetworkAgent时所创建的NetworkAgentInfo对象,然后来看该对象的属性:
public class NetworkAgentInfo {}
再来看他提供的方法:
public void addRequest(NetworkRequest networkRequest) {}public int getCurrentScore() {}public void setCurrentScore(int newScore) {}public String toString() {}public String name() {}
然后来看NetworkAgentInfo创建过程:
@NetworkAgentInfo.javapublic NetworkAgentInfo(Messenger messenger, AsyncChannel ac, NetworkInfo info, LinkProperties lp, NetworkCapabilities nc, int score, Context context, Handler handler, NetworkMisc misc) {//各种赋值this.messenger = messenger;asyncChannel = ac;network = null;networkInfo = info;linkProperties = lp;networkCapabilities = nc;currentScore = score;//创建NetworkMonitornetworkMonitor = new NetworkMonitor(context, handler, this);networkMisc = misc;created = false;validated = false;}
从这些信息我们看到,NetworkAgentInfo没有继承其他类,同时也只是提供了一些设置或者查询当前对象属性的一些方法,该对象的
主要作用也就是保存各个向ConnectivityService注册的NetworkAgent,以便于查询或修改某个NetworkAgent对象的相关信息。
但是从NetworkAgentInfo的构造方法中我们看到他创建了一个NetworkMonitor对象,那么该对象的作用是什么呢?
二、NetworkMonitor作用与初始化流程
下面我们来看NetworkMonitor的属性与初始化流程:
@NetworkMonitor.javapublic class NetworkMonitor extends StateMachine {}public NetworkMonitor(Context context, Handler handler, NetworkAgentInfo networkAgentInfo) {super(TAG + networkAgentInfo.name());//初始化各种成员变量mContext = context;mConnectivityServiceHandler = handler;mNetworkAgentInfo = networkAgentInfo;mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);mAlarmManager = (AlarmManager) context.getSyste
这篇关于网络连接评分机制之NetworkMonitor(原)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!