Volley的原理解析

在開(kāi)發(fā)中,我們使用的框架可以說(shuō)是很多,從開(kāi)始的原生的網(wǎng)絡(luò)請(qǐng)求HttpClient到httpUrlConnection,再到后面那些android大神封裝的AsyncHttpClient,異步請(qǐng)求網(wǎng)絡(luò),和以前的框架Afinal 到 Xutils3.0等一系列的網(wǎng)絡(luò)框架.
知道google推出最新的框架volley,又是在技術(shù)上推進(jìn)了一大步.也許現(xiàn)在我們大家都在說(shuō),volley都已經(jīng)過(guò)時(shí)了,現(xiàn)在大家都在使用OkHttp3,OKgo,RxJava+Retrofit等一系列最新的框架.雖然都會(huì)用,網(wǎng)絡(luò)框架,當(dāng)面試官問(wèn)到你所用的網(wǎng)絡(luò)框架的原理的時(shí)候.你一下子就云里霧里了.網(wǎng)絡(luò)框架使我們app的核心部分,我們不僅知其然,還要知其所以然.對(duì)其源碼進(jìn)行解剖.
看過(guò)官方文檔的開(kāi)發(fā)人員,就知道,官方給了一個(gè)volley的工作流程圖,如下:

Paste_Image.png

也許你光看這樣的流程圖,你根本不知道講的什么.那么接下來(lái)我們結(jié)合源代碼,進(jìn)行一步一步的分析,也許你就明白
首先使用volley的第一步驟是什么呢?
Volley.newRequestQueue(Context)來(lái)獲取一個(gè)RequestQueue對(duì)象,接著我們就從這個(gè)方法開(kāi)始入手
代碼:


Paste_Image.png

從代碼中我們可以清楚的看到,該方法只執(zhí)行了一個(gè)方法,那么我們進(jìn)入這個(gè)方法可以看到


Paste_Image.png

我們可以看到了面的statck,其實(shí)hurlStatck其實(shí)內(nèi)部就是HttpUrlConnection進(jìn)行網(wǎng)絡(luò)通信的.最后調(diào)用了Start()方法
接下來(lái)我們進(jìn)入start()方法,看執(zhí)行了什么
Paste_Image.png

先是創(chuàng)建了CacheDispacher實(shí)例,然后調(diào)用了他的start方法,接著for循環(huán)4次,就會(huì)有5個(gè)線程在后臺(tái)運(yùn)行,不斷的等待網(wǎng)絡(luò)請(qǐng)求的到來(lái),得到RequestQueue后,我們調(diào)用add方法. 未完待續(xù)…………
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容