Volley

作者: 字字珠玑 | 来源:发表于2016-10-13 19:09 被阅读31次

    原理概述

    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

          本文链接:https://www.haomeiwen.com/subject/ftcgkttx.html