原理概述
Paste_Image.png
問題
為什么RequestQueue
中要維護一個mCurrentRequests
隊列?
mWaitingRequests
隊列的作用是什么?
- 維護了一個等待請求的集合,如果一個請求正在被處理并且可以被緩存,后續的相同 url 的請求,將進入此等待隊列
- 請求結束的時候,查找請求等待集合mWaitingRequests中是否存在等待的請求,如果存在,則將等待隊列移除,并將等待隊列所有的請求添加到緩存請求隊列中,讓緩存請求處理線程CacheDispatcher自動處理
CacheDispatcher
如何處理緩存無效的情況?
- CacheDispatcher會持有RequestQueue種的mNetworkQueue的引用
- 發現緩存無效之后,就會將請求添加到mNetworkQueue中,交給NetworkDispatcher重新請求網絡
NetworkDispatcher
如何存儲緩存的情況?
重試機制是什么?
比我之前寫的重試機制好多了,Volley的重試更符合抽象的概念,Request封裝了重試的邏輯