網路框架比較(二)
阿新 • • 發佈:2018-11-29
自己重新整理了一份網路框架比較,對比了多個框架。目前使用的比較多的volley、okhttp、retrofit,從官網找了資料,
根據demo和總結,最終形成了表格。專案中volley部分機型、特定網路就會卡頓,特別慢。retrofit要定義介面,建議和rxjava一起使用,看是否習慣,是否容易上手。推薦使用okhttp,方便封裝呼叫。
安卓網路框架比較 | ||||
說明:網路請求框架比較多,現階段使用比較多、不斷更新的框架推薦Volley,Okhttp,Retrofit。網路基礎工具HttpUrlConnection,android-async-http功能簡單,需要自己封裝;httpclient(安卓高版本已廢棄,不再使用),xUtils3(作用廣泛而不精,已停止維護),這幾個不推薦使用。 |
||||
框架名稱 | 開發公司 | 官方說明 | 優點 | 缺點 |
volley | 1.網路請求的自動排程。 2.多個併發網路連線。 3.具有標準HTTP快取一致性的透明磁碟和記憶體響應快取。 4.支援請求優先順序。 5.取消請求API。您可以取消單個請求,也可以設定要取消的請求塊或範圍。 6.容易定製,例如,重試和後退。 7.強排序,使正確地使用從網路非同步獲取的資料填充UI變得容易。 8.除錯和跟蹤工具。 |
1. 擴充套件性強,基於介面設計。 2. 一定程度上符合http規範。返回包ResponseCode 的處理,請求頭的處理,快取機制的支援。 3. 重試以及優先順序的定義。 4. 提供簡單的圖片載入工具。 5.jar包較小,減小包體積。 |
1.不適合大的下載或者流式傳輸操作 2.不支援okio機制, 3.不支援重連機制,部分情況下請求會很慢甚至卡頓。 |
|
okhttp | Square | 1.HTTP是現代應用程式網路的方式。有效地使用HTTP將使您的內容載入速度更快,並節省頻寬。 2.OkHttp是一個HTTP客戶端,預設情況下是高效的。 3.HTTP/2支援允許對同一主機的所有請求共享一個socket。 4.連線池減少了請求延遲(如果HTTP/2不可用)。 5.透明GZIP縮小了下載大小。 6.響應快取完全避免了網路對重複請求的訪問。 7.當網路出現問題時,OkHttp會堅持下來:它會從常見的連線問題中安靜地恢復。如果您的服務有多個IP地址,那麼如果第一次連線失敗,OkHttp將嘗試替換地址。 |
1.支援GZIP壓縮機制。 2.底層實現了OKIO機制,讀寫操作更高效。 3.支援統一主機所有請求共享socket 4.當網路出現問題,會在多個伺服器之間切換地址,優化網路載入速度。 |
1.是訊息回來需要切到主執行緒,主執行緒要自己去寫。 2.呼叫比較複雜,需要自己進行封裝。 3.快取失效:網路請求時一般都會獲取手機的一些硬體或網路資訊,比如使用的網路環境。同時為了資訊傳輸的安全性,可能還會對請求進行加密。在這些情況下OkHttp的快取系統就會失效了,導致使用者在無網路情況下不能訪問快取。 |
Retrofit | Square | Retrofit是對okhttp封裝的網路框架,Android和Java的型別安全HTTP客戶端。 | 1.可以配置不同HTTP client來實現網路請求,如okhttp、httpclient等; 2.請求的方法引數註解都可以定製; 3.支援同步、非同步和RxJava; 4.超級解耦; 5.可以配置不同的反序列化工具來解析資料,如json、xml等; |
1.不能接觸序列化實體和響應資料; 2.執行的機制太嚴格; 3.使用轉換器比較低效; 4.只能支援簡單自定義引數型別; 5.大量使用註解,效率會降低。 |