標籤:
1. 什麼是Volley?
在這之前,我們在程式中需要和網路通訊的時候,大體使用的東西莫過於AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,在2013年Google I/O 上,Volley發布了。Volley是Android平台上的網路通訊庫,能使網路通訊更快,更簡單,更健壯。
2. Volley引入的背景
比如在以前從網上下載圖片的步驟可能是這樣的流程:
- 在ListAdapter#getView()裡開始映像的讀取。
- 通過AsyncTask等機制使用HttpURLConnection從伺服器去的圖片資源
- 在AsyncTask#onPostExecute()裡設定相應ImageView的屬性。
再比如,旋轉螢幕的時候,有時候會導致再次從網路取得資料。為了避免這種不必要的網路訪問,我們可能需要自己寫很多針對各種情況的處理,比如cache什麼的。
再有,比如ListView的時候,我們滾動過快,可能導致有些網路請求返回的時候,早已經滾過了當時的位置,根本沒必要顯示在list裡了,雖然我們可以通過ViewHolder來保持url等來實現防止兩次取得,但是那些已經沒有必須要的資料,還是會浪費系統的各種資源
3. 提供的功能
- JSON,映像等的非同步下載;
- 網路請求的排序(scheduling)
- 網路請求的優先順序處理
- 緩衝
- 多層級取消請求
- 和Activity和生命週期的聯動(Activity結束時同時取消所有網路請求)
Volley可是說是把AsyncHttpClient和Universal-Image-Loader的優點集於了一身,既可以像AsyncHttpClient一樣非常簡單地進行HTTP通訊,也可以像Universal-Image-Loader一樣輕鬆載入網路上的圖片。除了簡單易用之外,Volley在效能方面也進行了大幅度的調整,它的設計目標就是非常適合去進行資料量不大,但通訊頻繁的網路操作,而對於大資料量的網路操作,比如說下載檔案等,Volley的表現就會非常糟糕。
所示的這些應用都是屬於資料量不大,但網路通訊頻繁的,因此非常適合使用Volley。
下一篇繼續介紹volley的網路請求.........
android中volley通訊架構簡介