Volley

原理概述

  • 源码下载地址
Volley_第1张图片
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)开源库的封装过程

你可能感兴趣的:(Volley)