1. 程式人生 > >Android 網路框架_常用的網路框架

Android 網路框架_常用的網路框架

看了張哥(stormzhang)的部落格之後,深有感觸,又讓我感慨了一番,而且發現張哥的部落格英文跟漢字之間是有空格的,數字跟漢字之間也有空格,看起來很舒服很美觀,張哥真的是把每一個細節都做的很好,所以身為草根開發者的我,也要學習。附上張哥部落格的一部分截圖:

0.0.0

一、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.0.1

1.volley

Volley 的中文翻譯為“齊射、併發”,是在 2013 年的 Google 大會上釋出的一款 Android 平臺網路通訊庫,具有網路請求的處理、小圖片的非同步載入和快取等功能,能夠幫助 Android APP 更方便地執行網路操作,而且更快速高效。

在 Google IO 的演講上,其配圖是一幅發射火弓箭的圖,有點類似流星。這表示,Volley 特別適合資料量不大但是通訊頻繁的場景。見下圖:

1.1.1

優點:
(1)自動排程網路請求;
(2)高併發網路連線;
(3)通過標準的 HTTP cache coherence(快取記憶體一致性)快取磁碟和記憶體透明的響應;
(4)支援指定請求的優先順序( 請求佇列的優先順序排序);
(5) 提供多樣的取消機制:網路請求 cancel 機制,我們可以取消單個請求,或者指定取消請求佇列中的一個區域;
(6)框架容易被定製,例如,定製重試或者回退功能;
(7)包含了除錯與追蹤工具;
(8)預設 Android2.3 及以上基於 HttpURLConnection,2.3 以下使用基於 HttpClient
(9)提供簡便的圖片載入工具(其實圖片的載入才是我們最為看重的功能)

缺點:
(1)不能下載檔案:這也是它最致命的地方

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

接下來我們來看下我們國人封裝的兩個框架 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 容器快速滑動時候出現的圖片錯位等現象。

注:這個框架的作者已經停止更新了,因此現在就不推薦使用了

4.xUtils

xUtils跟Afinal是同類型的框架, 現在作者已經兩三年前就沒有進行更新了。

官網的簡介:
xUtils3 api 變化較多, 已轉至 https://github.com/wyouflf/xUtils3
xUtils 2.x 對 Android 6.0相容不是很好, 請儘快升級至 xUtils3.
xUtils 包含了很多實用的android工具。
xUtils 支援大檔案上傳,更全面的http請求協議支援(10種謂詞),擁有更加靈活的 ORM,更多的事件註解支援且不受混淆影響…
xUitls 最低相容android 2.2 (api level 8)

注:這個框架的作者已經停止更新了,因此現在就不推薦使用了

上面網路框架其實就個人而已,就不推薦使用了,要不就是功能太過豐富,如果在主流的 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 模組。

5.retrofit

其實 retrofit 是根據 OKHttp 封裝的框架,它的底層網路請求就是使用OKHttp的,這個框架的作者也是非常有名的,就是 Jake Wharton 。簡直就是我的偶像啊!

優點:
(1)支援 okhttp
(2)註解處理,簡化程式碼
(3)支援上傳和下載檔案
(4)支援自己更換解析方式
(5)支援多種http請求庫

二、選擇開源框架的見解

1.學習的成本:對該框架學習的時間長短,文件是否齊全的考慮
2.流行的程度:該開源框架是否流行,github 上 start 的個數,都是我們考量的標準
3.是否還在維護:如果該框架沒人維護了,隨著技術的不斷更新,都會出現大大小小的問題的
4.程式碼的體積: 體積當然不能太大了
5.程式碼的設計: 整體框架的設計

歡迎轉載,轉載請標明來源:

相關推薦

Android 網路框架_常用網路框架

看了張哥(stormzhang)的部落格之後,深有感觸,又讓我感慨了一番,而且發現張哥的部落格英文跟漢字之間是有空格的,數字跟漢字之間也有空格,看起來很舒服很美觀,張哥真的是把每一個細節都做的很好,所以身為草根開發者的我,也要學習。附上張哥部落格的一部分截圖:

網路_計算機網路原理第四章_自考本科段

概要:計算機網路原理第四章網路層重難點小結 1、網路層服務 識記:網路層服務     (1)網路層服務:提供端到端的程序間通訊服務;轉發、路由選擇(路由演算法)、連結管理;   領會:網路層定址;轉發與路由的基本概念;轉發與路由的

網路應用_計算機網路原理第二章_自考本科段

概要:計算機網路原理本科段第二章知識點總結 1、網路應用體系結構 識記:網路應用體系結構與分類 (1)網路應用體系結構與分類:計算機網路應用從體系結構角度可分為 客戶/伺服器結構(C/S),純P2P結構(Peer to Peer)、混合結構。   領會:C/S網路應用;

計算機網路概述_計算機網路原理第一章_自考本科段

概要:計算機網路原理第一章知識點重難點總結 1、計算機網路基本概念與網路結構 識記:計算機網路的概念;網路協議的網概念;計算機網路的分類;計算機網路的結構(網路邊緣、網路核心、接入網) (1)計算機網路的概念:計算機網路是互聯的、自治的計算機的集合。 (2)網路協議的網概念:協議是網

linux c 網路程式設計, 常用網路函式,範例

hstrerror返回網路錯誤原因的描述字串相關函式:herror表頭檔案:#include <netdb.h>函式定義:const char *hstrerror(int err)函式說明:hstrerror()用來依引數err的錯誤程式碼來查詢socket錯誤原因的描述字串, 然後將該字串指標

網路攻防之——常用網路掃描工具

netenum工具:一個很好用的IP段生成工具。可以用來檢視有哪些主機線上(這個工具的第二個功能的查詢結果不是特別準確,所以它的主要功能還是用來生成IP列表)。使用截圖如下 fping工具:常用格式:fping -g 123.58.180.0/24,用來進

Android 物聯網常用網路框架Mqtt

  import android.content.Intent; import android.util.Log; import com.sqy.vending.mqttvending_master.app.MyApplication; import com.sqy.vendi

Android進階:步驟三:Android常用框架:OkHttp網路操作框架

Okio & OkHttp 課程目標  掌握I/O操作的方法  掌握傳輸資料的方法 學習內容 Okio簡介  Okio的核心類  OkHttp簡介  OkHttp核心類  程式碼實踐 一、Okio簡介 什

Android常用網路請求框架xUtils、OkHttp、Volley、Retorfit對比

網路請求框架總結1.xutils     此框架龐大而周全,這個框架可以網路請求,同時可以圖片載入,又可以資料儲存,又可以 View 註解,使用這種框架很方便,這樣會使得你整個專案對它依賴性太強,萬一以後這個庫不維護了,或者中間某個模組出問題了,這個影響非常大,所以在專案開發時,一般會更喜歡選擇專注某一領域

Android中高階工程師面試指南 — 網路協議和網路框架面試講解 — OKHttp》

前言   Volley、OKHttp和Retrofit都是Android開發中經常使用的網路框架。Volley內部是使用HttpClient實現的,Retrofit是基於OKHttp實現的,同時在Android6.0之後,Google把HttpClient從SDK中移除,這就導致OK

swift 常用網路請求框架 Alamofire

let url="\(BASEURL)"+LUNBOURL     let image:UIImage=UIImage.init(named:"bannerhomeOne")!     //獲取資料     func normalGetData()  {  //ge

android上的一個網路介面和圖片快取框架enif

1.底層網路介面採用apache的httpclient連線池框架; 2.圖片快取採用基於LRU的演算法; 3.網路介面採用監聽者模式; 4.包含圖片的OOM處理(及時回收處理技術的應用);   圖片核心處理類:CacheView.java [java] v

Android Multimedia框架總結(二)MediaPlayer框架及播放網路視訊案例

前言:前面我們介紹MediaPlayer相關方法,有人說,沒有實際例子,看得不是很明白,今天在分析MediaPlayer時,順帶一個播放網路視訊例子。可以自行試試。同樣先看下今天的Agenda: Android中的MediaPlayer框架MediaPlayer播放視訊

Android封裝的一個簡單網路請求框架

最近做畢業設計,沒有用volley框架或則自己以前做專案比較熟悉的beeframework框架的網路請求部分(不得讚一句beeframework的網路請求部分封裝得很好,可以研究一下然後自己仿照著寫寫),本著熟悉和總結andorid一些基礎知識的目的,自己試著寫了一個自己在

IT觀察】網路通訊、圖片顯示、資料庫操作……Android程式設計師如何利用開源框架

【51CTO.com原創稿件】每個Android 程式設計師都不是Android應用開發之路上孤軍奮戰的一個人,GitHub上浩如煙海的開源框架或類庫就是前人為我們發明的輪子,有的輪子能提高軟體效能,而有的輪子似乎是以犧牲效能為代價換取程式設計速度。擅長利用輪子的程式設計師已經遙遙領先,不擅長利用輪子的

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

網路請求框架總結1.xutils     此框架龐大而周全,這個框架可以網路請求,同時可以圖片載入,又可以資料儲存,又可以 View 註解,使用這種框架很方便,這樣會使得你整個專案對它依賴性太強,萬一以後這個庫不維護了,或者中間某個模組出問題了,這個影響非常大,所以在專案開發時,一般會更喜歡選擇專注某一領域的

常用網路框架

APIpublic class API { public static boolean isOnline = false; public static final String DEV = "http://120.27.23.105/"; public

Androidandroid框架區別(網路框架、圖片非同步載入與快取框架、資料框架)特點整理

在我們安卓開發中,很多繁瑣的程式碼會很頭疼,編寫程式的週期會增加,因此很多框架都冒出來了,我們在搞懂底層原理之時,我們更應該學會用一些優秀框架來解決複雜程式碼,和繁瑣的重寫程式碼。因為針對最簡單的case,我只需要提供request url,成功時的callba

Android中幾種主流網路框架比較

      引言   目前網路請求框架也比較多,本文針對封裝的比較完善的Volley,Okhttp,Retrofit,AsyncHttpClient研究比較了,才知道選擇哪個最適合。 一.Volley 1.Volley主要特點 1. 擴充套件性強

Android高效能編碼實戰:網路框架優化

之前的文章從理論上介紹了Android高效能編碼的幾個優化的方向,下面我們從實戰的角度講述如何優化 之前的App啟動優化最後提到了網路框架的優化問題,本篇將針對這個問題對APP進一步優化 04-26 18:14:59.504 11295-11295/com.js