Volley框架的流程圖分析


      接着上一篇Volley框架的使用,這一篇主要主要講Volley框架運作的原理。主要使用流程圖來敘述,簡單的分析了整個流程的過程,具體的請參考源代碼或者查看我上一篇在文章末尾添上的鏈接。

 

一、Volley的准備

生成一個RequestQueue的隊列。

 

 

二、用戶添加Request

 

 

 

三、阻塞線程

(1)緩存隊列處理器

(2)網絡請求處理器

四、數據分發器

作為網絡回應的處理器

 

 

五、總結

1. 當一個RequestQueue被成功申請后會開啟一個CacheDispatcher(緩存調度器)和4個(默認)NetworkDispatcher(網絡請求調度器);

2. CacheDispatcher緩存調度器最為第一層緩沖,開始工作后阻塞的從緩存序列mCacheQueue中取得請求:

  a. 對於已經取消了的請求,直接標記為跳過並結束這個請求
  b. 全新或過期的請求,直接丟入mNetworkQueue中交由N個NetworkDispatcher進行處理
  c. 已獲得緩存信息(網絡應答)卻沒有過期的請求,交由Request的parseNetworkResponse進行解析,從而確定此應答是否成功。然后將請求和應答交由Delivery分發者進行處理,如果需要更新緩存那么該請求還會被放入mNetworkQueue中

3. 用戶將請求Request add到RequestQueue之后:

  a. 對於不需要緩存的請求(需要額外設置,默認是需要緩存)直接丟入mNetworkQueue交由N個NetworkDispatcher處理;
  b. 對於需要緩存的,全新的請求加入到mCacheQueue中給CacheDispatcher處理
  c. 需要緩存,但是緩存列表中已經存在了相同URL的請求,放在mWaitingQueue中做暫時雪藏,待之前的請求完畢后,再重新添加到mCacheQueue中;

4. 網絡請求調度器NetworkDispatcher作為網絡請求真實發生的地方,對消息交給BasicNetwork進行處理,同樣的,請求和結果都交由Delivery分發者進行處理;

5. Delivery分發者實際上已經是對網絡請求處理的最后一層了,在Delivery對請求處理之前,Request已經對網絡應答進行過解析,此時應答成功與否已經設定。而后Delivery根據請求所獲得的應答情況做不同處理:

  a. 若應答成功,則觸發deliverResponse方法,最終會觸發開發者為Request設定的Listener
  b. 若應答失敗,則觸發deliverError方法,最終會觸發開發者為Request設定的ErrorListener

處理完后,一個Request的生命周期就結束了,Delivery會調用Request的finish操作,將其從mRequestQueue中移除,與此同時,如果等待列表中存在相同URL的請求,則會將剩余的層級請求全部丟入mCacheQueue交由CacheDispatcher進行處理。

借用了該博客的總結(http://blog.csdn.net/airk000/article/details/39003587)

 

 

========================================

作者:cpacm

地址:http://www.cnblogs.com/cpacm/p/4211719.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM