Android經常使用的網絡框架

1、Android 經常使用的網絡框架
大多數應用程序基本都須要鏈接網絡,發送一些數據給服務端,或者從服務端獲取一些數據。一般在 Android 中進行網絡鏈接通常使用 Scoket 和HTTP,HTTP 請求方式比 Scoket 多得多。HTTP 請求通常採用原生的 HttpClient 和 HttpUrlConnection 的兩種網絡訪問方式。但是在 Android 5.0 的時候 Google 就不推薦使用 HttpClient 了,到了 Android 6.0 (api 23) SDK,再也不提供 org.apache.http.* (只保留幾個類), 所以,設置 android SDK 的編譯版本爲23時,且使用了 httpClient 相關類的庫項目:如 android-async-http 等等,會出現有一些類找不到的錯誤。
列舉目前經常使用的網絡框架,固然呢,每種網絡框架都會有其優勢和缺點的,主要是根據咱們自身的項目進行選擇:
1.volley
Volley 的中文翻譯爲「齊射、併發」,是在 2013 年的 Google 大會上發佈的一款 Android 平臺網絡通訊庫,具備網絡請求的處理、小圖片的異步加載和緩存等功能,可以幫助 Android APP 更方便地執行網絡操做,並且更快速高效。
優勢: 
(1)自動調度網絡請求; 
(2)高併發網絡鏈接; 
(3)經過標準的 HTTP cache coherence(高速緩存一致性)緩存磁盤和內存透明的響應; 
(4)支持指定請求的優先級( 請求隊列的優先級排序); 
(5) 提供多樣的取消機制:網絡請求 cancel 機制,咱們能夠取消單個請求,或者指定取消請求隊列中的一個區域; 
(6)框架容易被定製,例如,定製重試或者回退功能; 
(7)包含了調試與追蹤工具; 
(8)默認 Android2.3 及以上基於 HttpURLConnection,2.3 如下使用基於 HttpClient 
(9)提供簡便的圖片加載工具(其實圖片的加載纔是咱們最爲看重的功能)
缺點: 
(1)不能下載文件:這也是它最致命的地方
官網或相關地址: 
Volley 的 github 地址:https://github.com/mcxiaoke/a...; 
Google I/O 2013 – Volley: Easy, Fast Networking for Android:https://www.youtube.com/watch... 
簡單的使用:http://www.dengzhr.com/others...
2.Android-async-http
Android-async-http 是一個強大的網絡請求庫,這個網絡請求庫是基於 Apache HttpClient 庫之上的一個異步網絡請求處理庫,網絡處理均基於 Android 的非 UI 線程,經過回調方法處理請求結果。 
android-async-http 是一個強大的第三方開源網絡請求庫。惋惜的是 Android 6.0 (api 23) SDK,再也不提供 org.apache.http.* (只保留幾個類)。
優勢: 
(1) 在匿名回調中處理請求結果 
(2) 在 UI 線程外進行 http 請求 
(3) 文件斷點上傳 
(4) 智能重試 
(5) 默認 gzip 壓縮 
(6) 支持解析成 Json 格式 
(7) 可將 Cookies 持久化到 SharedPreference
官網或相關地址: 
Android-async-http 的 github 地址:https://github.com/loopj/andr... 
官網教程:http://loopj.com/android-asyn...
接下來咱們來看下咱們國人封裝的兩個框架 Afinal 框架和 xUtils ,這兩個框架的功能很是的豐富,甚至提供了數據庫的封裝,這很符合咱們國人開發的App,都是把一大堆的功能都集進去,那這麼強大的網絡框架是否是真的那麼強大呢?一般咱們都會這樣想:功能越豐富的開源框架,那麼它在單一的功能上,好比就網絡框架這一部分,是否是就沒有其餘專注網絡的框架好呢?
注:這個框架的做者已經中止更新了,所以如今就不推薦使用了
3.Afinal框架
Afinal 是一個 android 的 sqlite orm 和 ioc 框架。同時封裝了android中的http框架,使其更加簡單易用;使用 finalBitmap,無需考慮 bitmap 在 android 中加載的時候 oom 的問題和快速滑動的時候圖片加載位置錯位等問題。
Afinal的宗旨是簡潔,快速。約定大於配置的方式。儘可能一行代碼完成全部事情。
Afinal主要是分四個模塊: 
(1) 數據庫模塊:android 中的 orm 框架,使用了線程池對 sqlite 進行操做。 
(2) 註解模塊:android 中的 ioc 框架,徹底註解方式就能夠進行UI綁定和事件綁定。無需 findViewById 和 setClickListener 等。其實它後面是使用反射來進行初始化的。 
(3) 網絡模塊:經過 httpclient 進行封裝 http 數據請求,支持 ajax方式加載,支持下載、上傳文件功能。 
(4) 圖片緩存模塊:經過 FinalBitmap,imageview 加載 bitmap 的時候無需考慮 bitmap 加載過程當中出現的 oom 和 android 容器快速滑動時候出現的圖片錯位等現象。
官網或相關地址: 
Afinal框架 的 github 地址:https://github.com/yangfuhai/...
注:這個框架的做者已經中止更新了,所以如今就不推薦使用了
4.xUtils
xUtils跟Afinal是同類型的框架, 如今做者已經兩三年前就沒有進行更新了。
官網的簡介: 
xUtils3 api 變化較多, 已轉至 https://github.com/wyouflf/xU... 
xUtils 2.x 對 Android 6.0兼容不是很好, 請儘快升級至 xUtils3. 
xUtils 包含了不少實用的android工具。 
xUtils 支持大文件上傳,更全面的http請求協議支持(10種謂詞),擁有更加靈活的 ORM,更多的事件註解支持且不受混淆影響… 
xUitls 最低兼容android 2.2 (api level 8)
官網或相關地址: 
Afinal框架 的 github 地址:https://github.com/wyouflf/xU...
注:這個框架的做者已經中止更新了,所以如今就不推薦使用了
上面網絡框架其實就我的而已,就不推薦使用了,要不就是功能太過豐富,若是在主流的 app 中使用,對後期的維護, 代價就很大了。好比你發現你框架中不適合使用某個功能,須要替換這部分的框架,你就會發現,你整個項目都不出現這個框架的影子,對於後期維護的成本實在是太大了!
後面的幾個網路框架(okhttp , retrofit)是目前較好的網絡框架,在公司也發現,不少項目都是使用這幾個網絡框架的。這兩個網絡開源框架都是 square 公司提供的,在開源界中,有兩家公司提供的網絡框架是很是豐富的,一個是 square 和 Facebook ,真心感謝這兩個公司。
5.OKHttp
OkHttp 是一個相對成熟的解決方案,聽說 Android4.4 的源碼中能夠看到 HttpURLConnection 已經替換成 OkHttp 實現了。在 Android 6.0 中底層的源碼已經使用了 OKHttp ,這個是能夠肯定的。
OkHttp 處理了不少網絡疑難雜症:會從不少經常使用的鏈接問題中自動恢復。若是您的服務器配置了多個IP地址,當第一個 IP 鏈接失敗的時候,OkHttp 會自動嘗試下一個 IP。OkHttp 還處理了代理服務器問題和 SSL握手失敗問題。
使用 OkHttp 無需重寫您程序中的網絡代碼。OkHttp 實現了幾乎和Java.NET.HttpURLConnection 同樣的API。若是你用了 Apache HttpClient,則 OkHttp 也提供了一個對應的 okhttp-apache 模塊。
官網或相關地址: 
OKHttp 的 github 地址:https://github.com/square/okhttp
5.retrofit
其實 retrofit 是根據 OKHttp 封裝的框架,它的底層網絡請求就是使用OKHttp的,這個框架的做者也是很是有名的,就是 Jake Wharton 。簡直就是個人偶像啊!
優勢: 
(1)支持 okhttp 
(2)註解處理,簡化代碼 
(3)支持上傳和下載文件 
(4)支持本身更換解析方式 
(5)支持多種http請求庫android

相關文章
相關標籤/搜索