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的網絡請求.........