Volley框架的流程图分析

      接着上一篇Volley框架的使用,这一篇主要主要讲Volley框架运做的原理。主要使用流程图来叙述,简单的分析了整个流程的过程,具体的请参考源代码或者查看我上一篇在文章末尾添上的连接。html

 

1、Volley的准备缓存

生成一个RequestQueue的队列。网络

 

 

2、用户添加Request框架

 

 

 

3、阻塞线程spa

(1)缓存队列处理器.net

(2)网络请求处理器线程

4、数据分发器3d

做为网络回应的处理器htm

 

 

5、总结blog

1. 当一个RequestQueue被成功申请后会开启一个CacheDispatcher(缓存调度器)和4个(默认)NetworkDispatcher(网络请求调度器);

2. CacheDispatcher缓存调度器最为第一层缓冲,开始工做后阻塞的从缓存序列mCacheQueue中取得请求:

  a. 对于已经取消了的请求,直接标记为跳过并结束这个请求
  b. 全新或过时的请求,直接丢入mNetworkQueue中交由N个NetworkDispatcher进行处理
  c. 已得到缓存信息(网络应答)却没有过时的请求,交由Request的parseNetworkResponse进行解析,从而肯定此应答是否成功。而后将请求和应答交由Delivery分发者进行处理,若是须要更新缓存那么该请求还会被放入mNetworkQueue中

3. 用户将请求Request add到RequestQueue以后:

  a. 对于不须要缓存的请求(须要额外设置,默认是须要缓存)直接丢入mNetworkQueue交由N个NetworkDispatcher处理;
  b. 对于须要缓存的,全新的请求加入到mCacheQueue中给CacheDispatcher处理
  c. 须要缓存,可是缓存列表中已经存在了相同URL的请求,放在mWaitingQueue中作暂时雪藏,待以前的请求完毕后,再从新添加到mCacheQueue中;

4. 网络请求调度器NetworkDispatcher做为网络请求真实发生的地方,对消息交给BasicNetwork进行处理,一样的,请求和结果都交由Delivery分发者进行处理;

5. Delivery分发者实际上已是对网络请求处理的最后一层了,在Delivery对请求处理以前,Request已经对网络应答进行过解析,此时应答成功与否已经设定。然后Delivery根据请求所得到的应答状况作不一样处理:

  a. 若应答成功,则触发deliverResponse方法,最终会触发开发者为Request设定的Listener
  b. 若应答失败,则触发deliverError方法,最终会触发开发者为Request设定的ErrorListener

处理完后,一个Request的生命周期就结束了,Delivery会调用Request的finish操做,将其从mRequestQueue中移除,与此同时,若是等待列表中存在相同URL的请求,则会将剩余的层级请求所有丢入mCacheQueue交由CacheDispatcher进行处理。

借用了该博客的总结(http://blog.csdn.net/airk000/article/details/39003587)

 

 

========================================

做者:cpacm

地址:http://www.cnblogs.com/cpacm/p/4211719.html

相关文章
相关标签/搜索