Volley的主要特色:java
1.擴展性強.Volley中大多數都是基於接口的設計,可配置性強.數組
2.必定程度符合Http規範,包括返回ResponseCode的處理,請求頭的處理,緩存機制的支持等.並支持重試及優先級定義.緩存
3.默認Android2.3及以上基於HttpURLConnection,2.3如下基於HttpCllient.服務器
4.提供簡便的圖片加載工具.網絡
Volley主要是經過兩種Dispatch Thread
不斷從RequestQueue
中取出請求,根據是否已緩存調用Cache
或Network
這兩類數據獲取接口之一,從內存緩存或是服務器取得請求的數據,而後交由ResponseDelivery
去作結果分發及回調處理。框架
Volley 的調用比較簡單,經過 newRequestQueue(…) 函數新建並啓動一個請求隊列RequestQueue
後,只須要往這個RequestQueue
不斷 add Request 便可。函數
Volley:Volley 對外暴露的 API,經過 newRequestQueue(…) 函數新建並啓動一個請求隊列RequestQueue
。工具
Request:表示一個請求的抽象類。StringRequest
、JsonRequest
、ImageRequest
都是它的子類,表示某種類型的請求。url
RequestQueue:表示請求隊列,裏面包含一個CacheDispatcher
(用於處理走緩存請求的調度線程)、NetworkDispatcher
數組(用於處理走網絡請求的調度線程),一個ResponseDelivery
(返回結果分發接口),經過 start() 函數啓動時會啓動CacheDispatcher
和NetworkDispatchers
。spa
//----------------------------------------------------------------------------------------------
Volley.java是個工具類,做用是構建一個可用於添加網絡請求的RequestQueue對象.
Volley.java 有兩個重載的靜態方法。
public static RequestQueue newRequestQueue(Context context) public static RequestQueue newRequestQueue(Context context, HttpStack stack)
第一個方法的實現調用了第二個方法,傳 HttpStack 參數爲 null。
第二個方法中,若是 HttpStatck 參數爲 null,則若是系統在 Gingerbread 及以後(即 API Level >= 9),採用基於 HttpURLConnection 的 HurlStack,若是小於 9,採用基於 HttpClient 的 HttpClientStack。
RequestQueue.java:Volley框架的核心類,將請求Request加入到一個運行的RequestQueue裏面,來完成請求操做.