Android的網(wǎng)絡(luò)請求庫選擇

看了知乎上的一個回答

okhttp,retrofit,android-async-http,volley應(yīng)該選擇哪一個?

自己簡單總結(jié)一下回答的內(nèi)容


retrofit、okhttp:

retrofit是在okhttp基礎(chǔ)上做的封裝,應(yīng)該放在一起。

OkHttp 是 Square 公司開源的針對 Java 和 Android 程序,封裝的一個高性能 http 請求庫。

它是基于http協(xié)議封裝的一套請求客戶端,雖然它也可以開線程,但根本上它更偏向真正的請求,跟HttpClient, HttpUrlConnection的職責是一樣的。


android-async-http:

如果做過較久的項目,對這個網(wǎng)絡(luò)請求庫就不會陌生。國內(nèi)很多小公司和項目使用的都是async-http,它使用簡單、方便,上手十分容易。

但在這四種網(wǎng)絡(luò)庫的選擇中,最不推薦的就是它,有幾個主要原因:

async-http是封裝的httpClient,而android平臺不推薦用HttpClient了,因為在安卓6.0的SDK中,Google已經(jīng)移除對HttpClient客戶端的支持,使用HttpURLConnection類來代替。Android 6.0 變更

如果要繼續(xù)使用async-http,必須手動添加org.apache.http.legacy.jar包

android-async-http?的作者已經(jīng)不維護,因此整個相對其他網(wǎng)絡(luò)庫來說他已經(jīng)太老了

async-http使用了nio的方式實現(xiàn)的。okhttp沒有提供nio selector的方式,不過nio更適合大量連接的情況,對于移動平臺有點殺雞用牛刀的味道。


Volley:

Volley 是 Google 官方出的一套小而巧的異步請求庫,該框架封裝的擴展性很強,支持 HttpClient、HttpUrlConnection,甚至支持 OkHttp。

缺點是不支持同步,這點會限制開發(fā)模式。

另外Volley 的request和response都是把數(shù)據(jù)放到byte數(shù)組里,不支持輸入輸出流,我們下載一個大文件,不可能把整個文件都緩存到內(nèi)存之后再寫到文件里。所以不能post大數(shù)據(jù),不適合用來上傳文件。

而且 Volley 里面也封裝了 ImageLoader ,所以如果你愿意你甚至不需要使用其他的圖片加載框架,不過這塊功能沒有一些專門的圖片加載框架強大,對于簡單的需求可以使用,對于稍復(fù)雜點的需求還是需要用到專門的圖片加載框架。

所以 Volley比較適合使用在網(wǎng)絡(luò)請求較為頻繁的、數(shù)據(jù)量小的項目中。


一句話總結(jié):

Android的底層代碼是使用okhttp,而retrofit底層代碼也是okhttp,Volley連谷歌自己都不用,async-http則早已過時了。

最后編輯于
?著作權(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)容