1.xutils
此框架龐大而周全,這個框架可以網(wǎng)絡(luò)請求,同時可以圖片加載,又可以數(shù)據(jù)存儲,又可以 View 注解,使用這種框架很方便,這樣會使得你整個項目對它依賴性太強,萬一以后這個庫不維護了,或者中間某個模塊出問題了,這個影響非常大,所以在項目開發(fā)時,一般會更喜歡選擇專注某一領(lǐng)域的框架。
2.OkHttp
Android 開發(fā)中是可以直接使用現(xiàn)成的api進行網(wǎng)絡(luò)請求的,就是使用HttpClient、HttpUrlConnection 進行操作,目前HttpClient 已經(jīng)被廢棄,而 android-async-http 是基于HttpClient的,可能也是因為這個原因作者放棄維護。 而OkHttp是Square公司開源的針對Java和Android程序,封裝的一個高性能http請求庫,它的職責跟HttpUrlConnection 是一樣的,支持 spdy、http 2.0、websocket ,支持同步、異步,而且 OkHttp 又封裝了線程池,封裝了數(shù)據(jù)轉(zhuǎn)換,封裝了參數(shù)使用、錯誤處理等,api使用起來更加方便??梢园阉斫獬墒且粋€封裝之后的類似HttpUrlConnection的東西,但是在使用的時候仍然需要自己再做一層封裝,這樣才能像使用一個框架一樣更加順手。
3.Volley
Volley是Google官方出的一套小而巧的異步請求庫,該框架封裝的擴展性很強,支持HttpClient、HttpUrlConnection, 甚至支持OkHttp,而且Volley里面也封裝了ImageLoader,所以如果你愿意你甚至不需要使用圖片加載框架,不過這塊功能沒有一些專門的圖片加載框架強大,對于簡單的需求可以使用,稍復雜點的需求還是需要用到專門的圖片加載框架。Volley也有缺陷,比如不支持post大數(shù)據(jù),所以不適合上傳文件。不過Volley設(shè)計的初衷本身也就是為頻繁的、數(shù)據(jù)量小的網(wǎng)絡(luò)請求而生。
4.Retrofit
Retrofit是Square公司出品的默認基于OkHttp封裝的一套RESTful網(wǎng)絡(luò)請求框架,RESTful是目前流行的一套api設(shè)計的風格, 并不是標準。Retrofit的封裝可以說是很強大,里面涉及到一堆的設(shè)計模式,可以通過注解直接配置請求,可以使用不同的http客戶端,雖然默認是用http ,可以使用不同Json Converter 來序列化數(shù)據(jù),同時提供對RxJava的支持,使用Retrofit + OkHttp + RxJava + Dagger2 可以說是目前比較潮的一套框架,但是需要有比較高的門檻。
5.Volley VS OkHttp
Volley的優(yōu)勢在于封裝的更好,而使用OkHttp你需要有足夠的能力再進行一次封裝。而OkHttp的優(yōu)勢在于性能更高,因為 OkHttp基于NIO和Okio ,所以性能上要比 Volley更快。IO 和 NIO這兩個都是Java中的概念,如果我從硬盤讀取數(shù)據(jù),第一種方式就是程序一直等,數(shù)據(jù)讀完后才能繼續(xù)操作這種是最簡單的也叫阻塞式IO,還有一種是你讀你的,程序接著往下執(zhí)行,等數(shù)據(jù)處理完你再來通知我,然后再處理回調(diào)。而第二種就是 NIO 的方式,非阻塞式, 所以NIO當然要比IO的性能要好了,而 Okio是 Square 公司基于IO和NIO基礎(chǔ)上做的一個更簡單、高效處理數(shù)據(jù)流的一個庫。理論上如果Volley和OkHttp對比的話,更傾向于使用 Volley,因為Volley內(nèi)部同樣支持使用OkHttp,這點OkHttp的性能優(yōu)勢就沒了, 而且 Volley 本身封裝的也更易用,擴展性更好些。
6.OkHttp VS Retrofit
毫無疑問,Retrofit 默認是基于 OkHttp 而做的封裝,這點來說沒有可比性,肯定首選 Retrofit。
7.Volley VS Retrofit
這兩個庫都做了不錯的封裝,但Retrofit解耦的更徹底,尤其Retrofit2.0出來,Jake對之前1.0設(shè)計不合理的地方做了大量重構(gòu), 職責更細分,而且Retrofit默認使用OkHttp,性能上也要比Volley占優(yōu)勢,再有如果你的項目如果采用了RxJava ,那更該使用 Retrofit 。所以這兩個庫相比,Retrofit更有優(yōu)勢,在能掌握兩個框架的前提下該優(yōu)先使用 Retrofit。但是Retrofit門檻要比Volley稍高些, 要理解他的原理,各種用法,想徹底搞明白還是需要花些功夫的,如果你對它一知半解,那還是建議在商業(yè)項目使用Volley吧。
8.總結(jié)
綜上,如果以上三種網(wǎng)絡(luò)庫你都能熟練掌握,那么優(yōu)先推薦使用Retrofit,前提是最好你們的后臺api也能遵循RESTful的風格, 其次如果不想使用或者沒能力掌握Retrofit ,那么推薦使用Volley ,畢竟Volley不需要做過多的封裝,如果需要上傳大數(shù)據(jù), 那么不建議使用 Volley,該采用 OkHttp 。
原文地址:http://blog.csdn.net/qq_33342248/article/details/53906842