Volley源码分析笔记

Volley的介绍

  1. 线程管理
  2. 缓存管理
  3. 发送网络请求过程
    1. 在主线程把请求加入请求队列
    2. 缓存线程查询请求是否有缓存,如果有缓存,则从缓存中获取数据解析返回给主线程,如果没有缓存,把请求分发给网络线程
    3. 网络线程发送请求,从服务器获取数据,解析后返回给主线程

请求队列的初始化

  1. 磁盘缓存的初始化(DiskBasedCache)mCache
  2. 执行网络请求对象(Network)的创建 mNetwork
  3. 初始化网络请求的线程池mDispatchers = new NetworkDispatcher[threadPoolSize];,默认大小是4.
  4. 创建网络请求响应和错误的分发器mDelivery=new ExecutorDelivery(new Handler(Looper.getMainLooper()))

请求队列的启动

  1. 创建缓存分发器mCacheDispatcher = new CacheDispatcher(mCacheQueue, mNetworkQueue, mCache, mDelivery);启动该线程,执行run方法,run方法里面初始化磁盘缓存(把缓存文件的头读取出来,存入集合)
  2. 创建网络分发器并且启动
NetworkDispatcher networkDispatcher = new NetworkDispatcher(mNetworkQueue, mNetwork, mCache, mDelivery);
   mDispatchers[i] = networkDispatcher;

发送请求

  1. 首先网络请求添加到缓存请求队列mCacheQueue,CacheDispatcher的run方法里面的监控mCacheQueue,如果mCacheQueue有请求,则拿出来,查看是否有缓存,如果有并且没有过期,则解析网络缓存的结果,分发到主线程
  2. 请求加入到网络请求队列mNetworkQueue,NetworkDispatcher的run方法里面监控mNetworkQueue,如果有请求,则拿出来发送网络请求,获取到结果后解析,然后存入缓存,最后分发到主线程
    原文作者:沉默的范大叔
    原文地址: https://www.jianshu.com/p/a56c5565b513
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞