7.網(wǎng)絡(luò)框架

概念

retrofit、android-async-http、volley,幫你封裝了具體的請求,線程切換以及數(shù)據(jù)轉(zhuǎn)換。
OkHttp 是基于http協(xié)議封裝的一套請求客戶端,雖然它也可以開線程,但根本上它更偏向真正的請求,跟HttpClient, HttpUrlConnection的職責是一樣的。

1. android-async-http

android-async-http內(nèi)部實現(xiàn)是基于HttpClient, 想必你肯定知道6.0之后HttpClient是不是系統(tǒng)自帶的了,所以這個庫已經(jīng)不適合android平臺了。

2. Volley

Volley是官方出的,volley在設(shè)計的時候是將具體的請求客戶端做了下 封裝:HurlStack,也就是說可以支持HttpUrlConnection, HttpClient, OkHttp,相當于模版模式吧,這樣解耦還是非常方便的,可以隨意切換,如果你之前使用過Volley,并習慣使用,那直接寫個OkHttp擴展就行了。
缺點:是不支持同步,這點會限制開發(fā)模式;不能post大數(shù)據(jù),所以不適合用來上傳文件。

3. Retrofit

  1. 基于okhttp,特點是簡化了網(wǎng)絡(luò)請求流程,清晰簡單的接口。
  2. 同時自己內(nèi)部對OkHtttp客戶端做了封裝,同時2.x把之前1.x版本的部分不恰當職責都轉(zhuǎn)移給OkHttp了(例如Log,目前用OkHttp的Interceptor來實現(xiàn)),這樣的好處是職責清晰,Retrofit做自己該做的事兒。
  3. 而且Retrofit提供不同的Json Converter實現(xiàn)(json, protobuff, xml, moshi等),同時提供RxJava支持(返回Observable對象),配合Jackson(或者Gson)和RxJava,再加上Dagger2,你的效率至少可以提高一倍
  4. okhttp是高性能的http庫,支持同步、異步,而且實現(xiàn)了spdy、http2、websocket協(xié)議,api很簡潔易用,和volley一樣實現(xiàn)了http協(xié)議的緩存。picasso就是利用okhttp的緩存機制實現(xiàn)其文件緩存,實現(xiàn)的很優(yōu)雅,很正確,反例就是UIL(universal image loader),自己做的文件緩存,而且不遵守http緩存機制。

4.Okhttp

內(nèi)部開啟一個Socket鏈接,所有請求共享同一個Socket,目的是為了減少鏈接時間,并且維護有一個連接池;同時對傳輸數(shù)據(jù)進行GZIP壓縮,并且對網(wǎng)絡(luò)數(shù)據(jù)有緩存機制
OKHttp源碼解析
OKHttp源碼淺析與最佳實踐

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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