Volley使用说明与简单分析
2016-06-01 23:14
375 查看
Volley内部主要涉及有Request(请求),RequestQueue(请求队列),CacheDispatcher(缓存分发器,本质是缓存线程,一般只有一一条),NetworkDispather(网络分发器,本质是多线程),(背后采用线程池管理)。ResponseDelivery(Response分发器),NetWork(网络处理)。
一个Request从产生到消费的过程主要包含如下:
将通过RequestQueue的add(Requeue)将Requeue添加到RequeueQueue的mCurrentRequest(本质是Set),然后根据Request的shouldCache判断是否加入缓存队列(BolockingQueue mCacheQueue),然后判断是否含有这个缓存,或者缓存是否过期,或者缓存过期而希望刷新缓存,都会将 Request加入到网络队列(BolockingQueue mQueue),然后NetWorkDispatcher将Request派给NetWork处理,NetWork处理后返回数据,根据属性判断是否将结果加入缓存,然后将结果包装成自定义类返回,成功则回调Resopnse.Listener,失败则回调ErrorListener。
相反,则在缓存队列中寻找结果。
一个Request从产生到消费的过程主要包含如下:
将通过RequestQueue的add(Requeue)将Requeue添加到RequeueQueue的mCurrentRequest(本质是Set),然后根据Request的shouldCache判断是否加入缓存队列(BolockingQueue mCacheQueue),然后判断是否含有这个缓存,或者缓存是否过期,或者缓存过期而希望刷新缓存,都会将 Request加入到网络队列(BolockingQueue mQueue),然后NetWorkDispatcher将Request派给NetWork处理,NetWork处理后返回数据,根据属性判断是否将结果加入缓存,然后将结果包装成自定义类返回,成功则回调Resopnse.Listener,失败则回调ErrorListener。
相反,则在缓存队列中寻找结果。
相关文章推荐
- JAVA异常处理
- 发发牢骚
- css中的max-width
- MySQL中的表中增加删除字段
- XTU-1231 人生成就(求路径的种类 简单DP)
- PHP字符串
- 浅谈Android和java中的多线程下载
- Caffe Install In Windows
- c指针——上课
- Inverted File Index 文件倒排索引 课件理解与习题解
- SparseArray
- ARC和非ARC下使用Block属性的问题
- 第二阶段个人冲刺10
- cocos2dx中的设计模式
- CGPoint/NSPoint CGSize/NSSize
- linux高可用之corosync+packmaker详解
- 字符串匹配
- 自定义带清除功能的编辑框---ClearEditText
- 个人冲刺——第十天
- Android Material Design 一些属性详解