技術總結 Volley

2021-07-16 08:43:47 字數 1571 閱讀 4692

volley 實現原理解析

volley 是 google 推出的 android 非同步網路請求框架和載入框架。在 google i/o 2013 大會上發布。

volley 的主要特點

(1). 擴充套件性強。volley 中大多是基於介面的設計,可配置性強。

(2). 一定程度符合 http 規範,包括返回 responsecode(2xx、3xx、4xx、5xx)的處理,請求頭的處理,快取機制的支援等。並支援重試及優先順序定義。

(3). 預設 android2.3 及以上基於 httpurlconnection,2.3 以下基於 httpclient 實現,這兩者的區別及優劣在4.2.1 volley中具體介紹。

(4). 提供簡便的載入工具。

volley 中的概念

簡單介紹一些概念,在詳細設計中會仔細介紹。

volley 的呼叫比較簡單,通過 newrequestqueue(…) 函式新建並啟動乙個請求佇列requestqueue後,只需要往這個requestqueue不斷 add request 即可。

volley:volley 對外暴露的 api,通過 newrequestqueue(…) 函式新建並啟動乙個請求佇列requestqueue。

request:表示乙個請求的抽象類。stringrequest、jsonrequest、imagerequest 都是它的子類,表示某種型別的請求。

requestqueue:表示請求佇列,裡面包含乙個cachedispatcher(用於處理走快取請求的排程執行緒)、networkdispatcher陣列(用於處理走網路請求的排程執行緒),乙個responsedelivery(返回結果分發介面),通過 start() 函式啟動時會啟動cachedispatcher和networkdispatchers。

cachedispatcher:乙個執行緒,用於排程處理走快取的請求。啟動後會不斷從快取請求佇列中取請求處理,隊列為空則等待,請求處理結束則將結果傳遞給responsedelivery去執行後續處理。當結果未快取過、快取失效或快取需要重新整理的情況下,該請求都需要重新進入networkdispatcher去排程處理。

networkdispatcher:乙個執行緒,用於排程處理走網路的請求。啟動後會不斷從網路請求佇列中取請求處理,隊列為空則等待,請求處理結束則將結果傳遞給responsedelivery去執行後續處理,並判斷結果是否要進行快取。

responsedelivery:返回結果分發介面,目前只有基於executordelivery的在入參 handler 對應執行緒內進行分發。

httpstack:處理 http 請求,返回請求結果。目前 volley 中有基於 httpurlconnection 的hurlstack和 基於 apache httpclient 的httpclientstack。

network:呼叫httpstack處理請求,並將結果轉換為可被responsedelivery處理的networkresponse。

cache:快取請求結果,volley 預設使用的是基於 sdcard 的diskbasedcache。networkdispatcher得到請求結果後判斷是否需要儲存在 cache,cachedispatcher會從 cache 中取快取結果。

Volley框架總結

1.volley簡介 我們平時在開發android應用的時候不可避免地都需要用到網路技術,而多數情況下應用程式都會使用http協議來傳送和接收網路資料。android系統中主要提供了兩種方式來進行http通訊,httpurlconnection和httpclient,幾乎在任何專案的 中我們都能看到...

Volley關於新增Cookie總結

首先不論是stringrequest,josonrequest,imagerequest都是繼承volley的核心類 然後重寫getheaders 方法即可。private mapsendheader new hashmap 1 override public mapgetheaders throw...

Android網路框架總結Volley(一)

說了這麼多,我們用乙個簡單的例子來給各位展示volley最簡單的用法,也就是stringrequest,引包我就不介紹了,應該是個程式設計師都用過。1.首先需要發起乙個http請求,然後接收http響應,所以我們需要獲取乙個requestqueue requestqueue kqueue volle...