原理概述
问题
为什么RequestQueue
中要维护一个mCurrentRequests
队列?
mWaitingRequests
队列的作用是什么?
- 维护了一个等待请求的集合,如果一个请求正在被处理并且可以被缓存,后续的相同 url 的请求,将进入此等待队列
- 请求结束的时候,查找请求等待集合mWaitingRequests中是否存在等待的请求,如果存在,则将等待队列移除,并将等待队列所有的请求添加到缓存请求队列中,让缓存请求处理线程CacheDispatcher自动处理
CacheDispatcher
如何处理缓存无效的情况?
- CacheDispatcher会持有RequestQueue种的mNetworkQueue的引用
- 发现缓存无效之后,就会将请求添加到mNetworkQueue中,交给NetworkDispatcher重新请求网络
NetworkDispatcher
如何存储缓存的情况?
重试机制是什么?
比我之前写的重试机制好多了,Volley的重试更符合抽象的概念,Request封装了重试的逻辑