wordpress文章加密搜索不到優(yōu)化排名工具
在開機時,各個提供網(wǎng)絡(luò)連接的對象需要向ConnectivityService注冊自己,并把自己所提供的網(wǎng)絡(luò)的分值告訴ConnectivityService。
為了ConnectivityService便于統(tǒng)一管理,每一個具備提供網(wǎng)絡(luò)服務(wù)的對象都需要創(chuàng)建一個NetworkFactory的子類對象,并利用該對象注冊自己,以及提供自己的分值。
一、NetworkFactory介紹
我們先來看一下該對象的屬性:
@NetworkFactory.java/*** A NetworkFactory is an entity that creates NetworkAgent objects.* The bearers register with ConnectivityService using {@link #register} and* their factory will start receiving scored NetworkRequests. NetworkRequests* can be filtered 3 ways: by NetworkCapabilities, by score and more complexly by* overridden function. All of these can be dynamic - changing NetworkCapabilities* or score forces re-evaluation of all current requests.* @hide**/public class NetworkFactory extends Handler {}
這里的注釋介紹了該類的基本作用和注冊方法,其開頭的部分介紹到,該對象可以用來創(chuàng)建NetworkAgent,而結(jié)尾的hide標(biāo)明該類是隱藏類,也就是說 第三方應(yīng)用無法使用,也就意味著第三方應(yīng)用是無法承擔(dān)網(wǎng)絡(luò)連接的責(zé)任。
從其繼承關(guān)系看到,他的本質(zhì)是一個Handler類。
然后我們來簡單介紹一下該類提供的幾個重要方法:
//將當(dāng)前網(wǎng)絡(luò)注冊到ConnectivityService public void register() { }//處理網(wǎng)絡(luò)請求,用于打開或者釋放當(dāng)前連接private void handleAddRequest(NetworkRequest request, int score) {}//更新當(dāng)前網(wǎng)絡(luò)的分值public void setScoreFilter(int score) {}
以上三個是最重要的方法,在接下來的分析中將會多次看到他們的調(diào)用。還有幾個比較特殊的方法:
protected void startNetwork() { }protected void stopNetwork() { }protected void needNetworkFor(NetworkRequest networkRequest, int score) { }protected void releaseNetworkFor(NetworkRequest networkRequest) { }
這些方法都是protected屬性,他們的作用就是在評分后,決定當(dāng)前網(wǎng)絡(luò)被激活或者釋放,因此 一般都會在子類中被覆蓋。
屬性和方法介紹到這里,下面介紹該對象的使用。
二、NetworkFactory在數(shù)據(jù)連接中的初始化過程
我們從數(shù)據(jù)提供者DcTracker來看NetworkFactory的初始化以及使用方法。
簡單介紹一下DcTracker,他是數(shù)據(jù)網(wǎng)絡(luò)的提供者,承擔(dān)著APN參數(shù)選擇、數(shù)據(jù)業(yè)務(wù)建立與釋放等作用。
在DcTracker初始化時將會初始化數(shù)據(jù)的NetworkFactory對象:
@DcTracker.javapublic DcTracker(PhoneBase p) {ConnectivityManager cm = (ConnectivityManager)p.getContext().getSystemService( Context.CONNECTIVITY_SERVICE);mNetworkFilter = new NetworkCapabilities();mNetworkF