Volley源码探索

Author Avatar
Wing-Li 09月 02,2016

如果本文帮助到你,本人不胜荣幸,如果浪费了你的时间,本人深感抱歉。 希望用最简单的大白话来帮助那些像我一样的人。如果有什么错误,请一定指出,以免误导大家、也误导我。 本文来自:https://lylyl.cn/ 感谢您的关注。

一直听说 Volley 源码写的非常精妙,对于高并发处理非常不错。 研究一番之后,发现确实不错。


先说一说我是怎么看 Volley 的源码的。

  1. 首先,自己先研究一遍源码,从 Volley 入手,看了个遍,基本上占了一半的时间;
  1. 然后根据Volley 源码解析,在重新看一遍代码(占剩余时间的三分之二);
  2. 看完之后,自己再抛开文章,自己重新看一遍代码;
  3. 根据思路,写下看完之后的理解。

Volley 源码解析 这篇文章对 Volley 整个项目介绍的非常详细,以及流程图也做的非常清晰,非常有利于结合起来一起看。

针对于 Volley 的源码解析文章特别的多,而且基本都写的不错,如果再写一遍跟抄袭差不多,所以我还是只写出自己看完之后的理解总结。 虽然,写出来好像没什么,但是其中滋味,看完之后 真的会有另一番味道。


Volley 整体流程图

RequestQueue 工作流程:

CacheDispatcher(无限循环):缓存调度
  1. 先看缓存有没有; 若没有,则将其加入Network 工作队列。

  2. 若有,看缓存是否过期; 若过期,则将其加入Network 工作队列。

  3. 若没过期,则返回 Response,不进行网络请求。

NetworkDispatcher(无限循环):网络调度
  1. 查看请求是否被取消; 若取消,则结束这次请求,开始下一次循环,执行下一个请求。

  2. 没有取消,查看请求的地址是否有相应; 无响应,则结束这次请求,开始下一次循环,执行下一个请求。

  3. 有响应,则用 Network 进行 request 的请求,返回 Response;

  4. 是否需要缓存; 需要,则存入Cache。 不需要,则继续往下。

  5. 返回给 ResponseDelivery 。


> **个人理解:** > 两个循环均是无限循环;
互相存入或获取;
两者互相配合,使网络频繁请求更加高效。

大家去看源码时,以此 为主线去看源码里面的一些东西,相信可以理解的更快一些。


关于 Volley 的框架结构

关于这张图,估计只有我能看懂吧, 哈哈哈....

这个是看第一遍的时候,边看边画的,所以不太清晰。

这张图是以 Network 为主线。 而 Volley 的整体设计应该是以 Request 为主线。


因为断断续续看了两三天,所以记忆比较深,在此写下思路,以便后来复习时,能够快速建立当时脑中的逻辑模型。

推荐文章:Volley 源码解析

OK。 如果本文有什么问题,请一定指出。 O(∩_∩)O

0评论