Android常用網路請求框架xUtils、OkHttp、Volley、Retorfit對比
阿新 • • 發佈:2019-01-30
網路請求框架總結
1.xutils
此框架龐大而周全,這個框架可以網路請求,同時可以圖片載入,又可以資料儲存,又可以 View 註解,使用這種框架很方便,這樣會使得你整個專案對它依賴性太強,萬一以後這個庫不維護了,或者中間某個模組出問題了,這個影響非常大,所以在專案開發時,一般會更喜歡選擇專注某一領域的框架。
2.OkHttp
Android 開發中是可以直接使用現成的api進行網路請求的,就是使用HttpClient、HttpUrlConnection 進行操作,目前HttpClient 已經被廢棄,而 android-async-http 是基於HttpClient的,可能也是因為這個原因作者放棄維護。
3.Volley
Volley是Google官方出的一套小而巧的非同步請求庫,該框架封裝的擴充套件性很強,支援HttpClient、HttpUrlConnection,
4.Retrofit
Retrofit是Square公司出品的預設基於OkHttp封裝的一套RESTful網路請求框架,RESTful是目前流行的一套api設計的風格, 並不是標準。Retrofit的封裝可以說是很強大,裡面涉及到一堆的設計模式,可以通過註解直接配置請求,可以使用不同的
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不需要做過多的封裝,如果需要上傳大資料,