版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/u010046908/article/details/49662561
Volley 是一個HTTP庫,它能夠幫助Android apps更友善的執行網絡操作,最重要的是,它更快速高效。可以通過開源的
AOSP 倉庫擷取到Volley 。
Volley 有如下的優點:
自動排程網絡請求。高并發網絡連接配接。通過标準的HTTP的cache coherence(高速緩存一緻性)使得磁盤與記憶體緩存不可見(Transparent)。支援指定請求的優先級。
支援取消已經發出的請求。你可以取消單個請求,或者指定取消請求隊列中的一個區域。
架構容易被定制,例如,定制重試或者回退功能。
強大的指令(Strong ordering)可以使得異步加載網絡資料并顯示到UI的操作更加簡單。包含了Debugging與tracing工具。
Volley擅長執行用來顯示UI的RPC操作, 例如擷取搜尋結果的資料。它輕松的整合了任何協定,并輸出操作結果的資料,可
以是raw strings,也可以是images,或者是JSON。通過提供内置你可能使用到得功能,Volley可以使得你免去重複編寫樣闆
代碼,使你可以把關注點放在你的app的功能邏輯上。
Volley不适合用來下載下傳大的資料檔案。因為Volley會在解析的過程中保留持有所有的響應資料在記憶體中。對于下載下傳大量的資料操作,請考慮使用DownloadManager。
Volley架構的核心代碼是托管在AOSP倉庫的 frameworks/volley 中,相關的工具放在 toolbox 下。把Volley添加到你的項目中的最簡便的方法是Clone倉庫然後把它設定為一個library project:
通過下面的指令來Clone倉庫:git clone https://android.googlesource.com/platform/frameworks/volley
1、發送簡單的網絡請求(Sending a Simple Request)
使用Volley的方式是,你通過建立一個 RequestQueue 并傳遞 Request 對象給它。RequestQueue管理工作線程用來執行網絡操
作,從Cache中讀取與寫入資料,以及解析Http的響應内容。 Requests 執行raw responses的解析,Volley會把響應的資料分發給主線程。
(1) 為了使用Volley,你必須添加 android.permission.INTERNET 權限到你的manifest檔案中。沒有這個權限,你的app将無法通路網絡。
(2)Volley提供了一個簡便的方法: Volley.newRequestQueue 用來為你建立一個 RequestQueue ,使用預設值,并啟動這個隊列。例如:
final TextView mTextView = (TextView) findViewById(R.id.text);
...
// Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://www.google.com";
// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener() {
@Override
public void onResponse(String response) {
// Display the first 500 characters of the response string.
mTextView.setText("Response is: "+ response.substring(0,500));
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mTextView.setText("That didn't work!");
}
});
// Add the request to the RequestQueue.
queue.add(stringRequest);
Volley總是把解析過後的資料傳回到主線程中。在主線程中更加合适使用接收到到的資料用來操作UI控件,這樣你可以在響
應的handler中輕松的修改UI,但是對于庫提供的一些其他方法是有些特殊的,例如與取消有關的。
關于如何建立你自己的請求隊列,不要使用Volley.newRequestQueue方法,請檢視建立一個請求隊列Setting Up a
RequestQueue。
為了發送一個請求,你隻需要構造一個請求并通過 add() 方法添加到 RequestQueue 中。一旦你添加了這個請求,它會通過隊
列,得到處理,然後得到原始的響應資料并傳回。