為什么要使用Volley框架
開發android應用很多時候都要涉及網絡操作,Android SDK中提供了HttpClient 和 HttpUrlConnection兩種方式用來處理網絡操作,但當應用比較復雜的時候需要我們編寫大量的代碼處理很多東西:圖像緩存,請求的調度等等;
而Volley框架就是為解決這些而生的,它與2013年Google I/O大會上被提出:使得Android應用網絡操作更方便更快捷;抽象了底層Http Client等實現的細節,讓開發者更專注與產生RESTful Request。另外,Volley在不同的線程上異步執行所有請求而避免了阻塞主線程。
Volley到底有哪些特點呢?
- 自動調度網絡請求
- 多個並發的網絡連接
- 通過使用標准的HTTP緩存機制保持磁盤和內存響應的一致
- 支持請求優先級
- 支持取消請求的強大API,可以取消單個請求或多個
- 易於定制
- 健壯性:便於正確的更新UI和獲取數據
- 包含調試和追蹤工具
如何使用Volley
- git clone https://android.googlesource.com/platform/frameworks/volley 或者 https://github.com/mcxiaoke/android-volley
或者到Maven下載http://central.maven.org/maven2/com/mcxiaoke/volley/library/1.0.19/library-1.0.19.jar
Volley中的RequestQueue 和 Request
RequestQueue
用來執行請求的請求隊列Request
用來構造一個請求對象Request對象
主要有以下幾種類型:
StringRequest
響應的主體為字符串JsonArrayRequest
發送和接收JSON數組JsonObjectRequest
發送和接收JSON對象ImageRequest
發送和接收Image
Volley的基本使用
首先我們需要創建一個RequestQueue requestQueue
,然后構建一個自己所需要的XXRequest req
,之后通過requestQueue.add(req)
;將請求添加至請求隊列;
構建一個RequestQueue
RequestQueue requestQueue=Volley.newRequestQueue(this);//這里的this指的是Context
創建一個Request(以JsonObjectRequest為例)
private final String url="http:/xxxxx"//所需url JsonObjectRequest req=new JsonObjectRequest(url,null,new Response.Listener<JsonObject>(){ @Override public void onResponse(JsonObject response){ //添加自己的響應邏輯, } }, new ResponseError.Listener(){ @Override public void onResponseError(VollerError error){ //錯誤處理 L.d("Error Message:","Error is"+error); } });
將req添加到requestQueue
在構建JsonObjectRequest
對象時,需要四個參數,其中第二個參數代表http方法,第三個和第四個分別是響應監聽和響應錯誤監聽,分別需要覆寫onResponse()
和onResponseError()
方法;RequestQueue
將會執行請求,並將響應回調onResponse()
方法,所以需要在onResponse()方法中實現自己的業務邏輯
參考資料 :http://blog.csdn.net/qwm8777411/article/details/45770979
http://www.kwstu.com/ArticleView/kwstu_20144118313429