Volley框架的原理剖析-->

Volley的主要特色:java

  1.擴展性強.Volley中大多數都是基於接口的設計,可配置性強.數組

  2.必定程度符合Http規範,包括返回ResponseCode的處理,請求頭的處理,緩存機制的支持等.並支持重試及優先級定義.緩存

  3.默認Android2.3及以上基於HttpURLConnection,2.3如下基於HttpCllient.服務器

  4.提供簡便的圖片加載工具.網絡

Volley主要是經過兩種Dispatch Thread不斷從RequestQueue中取出請求,根據是否已緩存調用CacheNetwork這兩類數據獲取接口之一,從內存緩存或是服務器取得請求的數據,而後交由ResponseDelivery去作結果分發及回調處理。框架

  Volley 的調用比較簡單,經過 newRequestQueue(…) 函數新建並啓動一個請求隊列RequestQueue後,只須要往這個RequestQueue不斷 add Request 便可。函數

  Volley:Volley 對外暴露的 API,經過 newRequestQueue(…) 函數新建並啓動一個請求隊列RequestQueue工具

  Request:表示一個請求的抽象類。StringRequestJsonRequestImageRequest 都是它的子類,表示某種類型的請求。url

  RequestQueue:表示請求隊列,裏面包含一個CacheDispatcher(用於處理走緩存請求的調度線程)、NetworkDispatcher數組(用於處理走網絡請求的調度線程),一個ResponseDelivery(返回結果分發接口),經過 start() 函數啓動時會啓動CacheDispatcherNetworkDispatchersspa

//----------------------------------------------------------------------------------------------

  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裏面,來完成請求操做.

相關文章
相關標籤/搜索