
看了知乎上的一個回答
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則早已過時了。