天天看點

Android網絡架構綜述(一)OkHttp、NoHttp、Volley

首先:總體來看OkHttp和NoHttp、Volley不是一個層面的架構,直接比較有些不妥。下面分别簡述:

1、Okhttp和HttpClient、HttpURLConnection或Apache的HttpClient是同等級别的,他們是網絡用戶端,不僅Android能用,java也能用,是以在Android中想要用要進行封裝以提供簡單的API使用。

OKHttp非常高效,支援SPDY、連接配接池、GZIP和 HTTP 緩存。預設情況下,OKHttp會自動處理常見的網絡問題,像二次連接配接、SSL的握手問題。從Android4.4開始HttpURLConnection的底層實作采用的是okHttp.

2、Volley是Google基于HttpClient + HttpURLConnection來封裝的,針對短、頻、快的網絡請求推出的一款架構。Volley可是說是把AsyncHttpClient和Universal-Image-Loader的優點集于了一身,既可以像AsyncHttpClient一樣非常簡單地進行HTTP通信,也可以像Universal-Image-Loader一樣輕松加載網絡上的圖檔。除了簡單易用之外,Volley在性能方面也進行了大幅度的調整,它的設計目标就是非常适合去進行資料量不大,但通信頻繁的網絡操作,而對于大資料量的網絡操作,比如說下載下傳檔案等,Volley的表現就會非常糟糕

3、NoHttp是基于HttpURLConnection來封裝的,它的優勢在于封裝的功能強大,性能也可以。簡述如下:

(1)支援HTTP/HTTPS,自動維持Cookie,異步/同步請求,大檔案/多檔案上傳,檔案下載下傳,斷點續傳。

(2)支援304緩存,302/303重定向,支援通過代理伺服器通路位址。

(3)NoHttp是隊列,自動為請求排隊,可以取消指定請求,可以取消隊列所有請求,亦可以停止隊列。

(4)支援請求String、Bitmap、JsonObject、可自定義擴充請求類型(demo中的FastJsonRequest等)

(5)API使用簡單,Request對象包涵參數、檔案、請求頭等;Response對象包涵響應内容, 響應頭等資訊。

總結:

(1)如果你的應用場景是頻繁短暫的網絡互動不涉及大檔案的上傳、下載下傳 Volley足可以滿足需求,apk的更新下載下傳要自行封裝一下;

(2)如果你想更省事、更簡單的開發可以使用NoHttp,不過NoHttp是個人開發的,後期的維護更新是有風險的;

(3)如果想要穩定并且高效的一款網絡架構,OkHttp是首選,花點時間找一個封裝好的架構或者自己封裝一下想要的功能就可以了。

附:OkHttp封裝比較好的兩個架構   在app的build.gradle檔案的dependencies中加入引用即可

(1)compile 'com.zhy:okhttputils:2.6.1'
           

或者OkHttp母公司出品的Retrofit

(2)compile 'com.squareup.retrofit2:retrofit:2.1.0'
           
Android網絡架構綜述(一)OkHttp、NoHttp、Volley

繼續閱讀