安卓開發經常使用網絡請求框架OkHttp、Volley、XUtils、Retrofit對比

網絡請求框架總結
1.xutils  
   此框架龐大而周全,這個框架能夠網絡請求,同時能夠圖片加載,又能夠數據存儲,又能夠 View 註解,使用這種框架很方便,這樣會使得你整個項目對它依賴性太強,萬一之後這個庫不維護了,或者中間某個模塊出問題了,這個影響很是大,因此在項目開發時,通常會更喜歡選擇專一某一領域的框架。

2.OkHttp
    Android 開發中是能夠直接使用現成的api進行網絡請求的,就是使用HttpClient、HttpUrlConnection 進行操做,目前HttpClient 已經被廢棄,而 android-async-http 是基於HttpClient的,可能也是由於這個緣由做者放棄維護。 而OkHttp是Square公司開源的針對Java和Android程序,封裝的一個高性能http請求庫,它的職責跟HttpUrlConnection 是同樣的,支持 spdy、http 2.0、websocket ,支持同步、異步,並且 OkHttp 又封裝了線程池,封裝了數據轉換,封裝了參數使用、錯誤處理等,api使用起來更加方便。能夠把它理解成是一個封裝以後的相似HttpUrlConnection的東西,可是在使用的時候仍然須要本身再作一層封裝,這樣才能像使用一個框架同樣更加順手。

3.Volley
   Volley是Google官方出的一套小而巧的異步請求庫,該框架封裝的擴展性很強,支持HttpClient、HttpUrlConnection, 甚至支持OkHttp,並且Volley裏面也封裝了ImageLoader,因此若是你願意你甚至不須要使用圖片加載框架,不過這塊功能沒有一些專門的圖片加載框架強大,對於簡單的需求可使用,稍複雜點的需求仍是須要用到專門的圖片加載框架。Volley也有缺陷,好比不支持post大數據,因此不適合上傳文件。不過Volley設計的初衷自己也就是爲頻繁的、數據量小的網絡請求而生。

4.Retrofit
   Retrofit是Square公司出品的默認基於OkHttp封裝的一套RESTful網絡請求框架,RESTful是目前流行的一套api設計的風格, 並非標準。Retrofit的封裝能夠說是很強大,裏面涉及到一堆的設計模式,能夠經過註解直接配置請求,可使用不一樣的http客戶端,雖然默認是用http ,可使用不一樣Json Converter 來序列化數據,同時提供對RxJava的支持,使用Retrofit + OkHttp + RxJava + Dagger2 能夠說是目前比較潮的一套框架,可是須要有比較高的門檻。 

5.Volley VS OkHttp
  Volley的優點在於封裝的更好,而使用OkHttp你須要有足夠的能力再進行一次封裝。而OkHttp的優點在於性能更高,由於 OkHttp基於NIO和Okio ,因此性能上要比 Volley更快。IO 和 NIO這兩個都是Java中的概念,若是我從硬盤讀取數據,第一種方式就是程序一直等,數據讀完後才能繼續操做這種是最簡單的也叫阻塞式IO,還有一種是你讀你的,程序接着往下執行,等數據處理完你再來通知我,而後再處理回調。而第二種就是 NIO 的方式,非阻塞式, 因此NIO固然要比IO的性能要好了,而 Okio是 Square 公司基於IO和NIO基礎上作的一個更簡單、高效處理數據流的一個庫。理論上若是Volley和OkHttp對比的話,更傾向於使用 Volley,由於Volley內部一樣支持使用OkHttp,這點OkHttp的性能優點就沒了,  並且 Volley 自己封裝的也更易用,擴展性更好些。 

6.OkHttp VS Retrofit
   毫無疑問,Retrofit 默認是基於 OkHttp 而作的封裝,這點來講沒有可比性,確定首選 Retrofit。 

7.Volley VS Retrofit 
  這兩個庫都作了不錯的封裝,但Retrofit解耦的更完全,尤爲Retrofit2.0出來,Jake對以前1.0設計不合理的地方作了大量重構, 職責更細分,並且Retrofit默認使用OkHttp,性能上也要比Volley佔優點,再有若是你的項目若是採用了RxJava ,那更該使用  Retrofit 。因此這兩個庫相比,Retrofit更有優點,在能掌握兩個框架的前提下該優先使用 Retrofit。可是Retrofit門檻要比Volley稍高些, 要理解他的原理,各類用法,想完全搞明白仍是須要花些功夫的,若是你對它只知其一;不知其二,那仍是建議在商業項目使用Volley吧。 

8.總結
  綜上,若是以上三種網絡庫你都能熟練掌握,那麼優先推薦使用Retrofit,前提是最好大家的後臺api也能遵循RESTful的風格, 其次若是不想使用或者沒能力掌握Retrofit ,那麼推薦使用Volley ,畢竟Volley不須要作過多的封裝,若是須要上傳大數據, 那麼不建議使用 Volley,該採用 OkHttp 。android

相關文章
相關標籤/搜索