Volley

原理概述

Paste_Image.png

問題

為什么RequestQueue中要維護一個mCurrentRequests隊列?

mWaitingRequests隊列的作用是什么?

  • 維護了一個等待請求的集合,如果一個請求正在被處理并且可以被緩存,后續的相同 url 的請求,將進入此等待隊列
  • 請求結束的時候,查找請求等待集合mWaitingRequests中是否存在等待的請求,如果存在,則將等待隊列移除,并將等待隊列所有的請求添加到緩存請求隊列中,讓緩存請求處理線程CacheDispatcher自動處理

CacheDispatcher如何處理緩存無效的情況?

  • CacheDispatcher會持有RequestQueue種的mNetworkQueue的引用
  • 發現緩存無效之后,就會將請求添加到mNetworkQueue中,交給NetworkDispatcher重新請求網絡

NetworkDispatcher如何存儲緩存的情況?

重試機制是什么?

比我之前寫的重試機制好多了,Volley的重試更符合抽象的概念,Request封裝了重試的邏輯

參考

  1. 如何去閱讀Android Volley框架源碼?
  2. Android Volley完全解析(四),帶你從源碼的角度理解Volley
  3. Volley源碼解析
  4. 教你寫Android網絡框架之基本架構
  5. 教你寫Android網絡框架之Request、Response類與請求隊列
  6. Volley:公共技術點之面向對象六大原則
  7. HTTP協議:緩存
  8. 寫給后端程序員的HTTP緩存原理介紹
  9. HTTP緩存相關頭
  10. 深入理解HTTP協議及原理分析之緩存
  11. Android網絡請求心路歷程
  12. Retrofit指南
  13. Retrofit2 源碼解析
  14. Volley+OkHttp3+Gson(Jackson)開源庫的封裝過程
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容