volley总结

Vollery的定义

vollery  是Goole 推出的android 一步网络请求矿建和图片加载的框架

volley 的特点 :

1扩展性强 volley中大多是是基于接口的设计

2一定的成都或者合同谈判的规范包括返回ResponseCode(2xx3xx4xx5xx)的处理,请求头的处理,缓存机制的支持等。并支持重试及优先级定义。

3默认的android2基于httpURLconnectin

总体的设计图

 

volley  放在子线程中操作

 

 

vollery   通过 newRequestQueue(…)函数新建并启动一个请求的对列Resquest

Queue后 智需要RequestQueue不断 add Request 即可。

VolleyVolley 对外暴露的 API,通过 newRequestQueue(…) 函数新建并启动一个请求队列RequestQueue

Request:表示一个请求的抽象类。StringRequestJsonRequestImageRequest 都是它的子类,表示某种类型的请求。

RequestQueue:表示请求队列,里面包含一个CacheDispatcher(用于处理走缓存请求的调度线

CacheDispatcher:一个线程,用于调度处理走缓存的请求。启动后会不断从缓存请求队列中取请求处理,队列为空则等待,请求处理结束则将结果传递给ResponseDelivery去执行后续处理。当结果未缓存过、缓存失效或缓存需要刷新的情况下,该请求都需要重新进入NetworkDispatcher去调度处理。

 

多用组合,少用继承;针对接口编程,不针对具体实现编程。

 

主要方法:

public synchronized void initialize() 初始化,扫描缓存目录得到所有缓存数据摘要信息放入内存。
publicsynchronized Entry get(String key) 从缓存中得到数据。先从摘要信息中得到摘要信息,然后读取缓存数据文件得到内容。
publicsynchronized void put(String key, Entry entry) 将数据存入缓存内。先检查缓存是否会满,会则先删除缓存中部分数据,然后再新建缓存文件。
private voidpruneIfNeeded(int neededSpace) 检查是否能再分配 neededSpace 字节的空间,如果不能则删除缓存中部分数据。
publicsynchronized void clear() 清空缓存。 public synchronized voidremove(String key) 删除缓存中某个元素。

(2).CacheHeader

CacheHeader 是缓存文件摘要信息,存储在缓存文件的头部,与上面的Cache.Entry相似。

4.2.8 NoCache.java

继承 Cache 类,不做任何操作的缓存实现类,可将它作为构建RequestQueue的参数以实现一个不带缓存的请求队列。

4.2.9 Network.java

代表网络的接口,处理网络请求。
唯一的方法,用于执行特定请求。

publicNetworkResponse performRequest(Request<?> request) throws VolleyError;

4.2.10 NetworkResponse.java

Network中方法 performRequest 的返回值,Request parseNetworkResponse(…) 方法入参,是 Volley 中用于内部 Response 转换的一级。
封装了网络请求响应的 StatusCodeHeaders Body 等。

强求对列volley 自带线程 

请求对列不断放请求  暴漏api  静态类  请求对象 Stringrequest

请求结果的传输接口,用于传递请求结果或者请求错误。
有三个方法:

publicvoid postResponse(Request<?> request, Response<?> response);

此方法用于传递请求结果,request  response 参数分别表示请求信息和返回结果信息。

publicvoid postResponse(Request<?> request, Response<?> response, Runnable runnable);

此方法用于传递请求结果,并在完成传递后执行 Runnable

 关于 Http 缓存

Volley 构建了一套相对完整的符合 Http 语义的缓存机制。
优点和特点
(1).
根据Cache-ControlExpires首部来计算缓存的过期时间。如果两个首部都存在情况下,以Cache-Control为准。
(2).
利用If-None-MatchIf-Modified-Since对过期缓存或者不新鲜缓存,进行请求再验证,并处理 304 响应,更新缓存。
(3).
默认的缓存实现,将缓存以文件的形式存储在 Disk,程序退出后不会丢失。

我个人认为的不足之处
缓存的再验证方面,在构建If-Modified-Since请求首部时,Volley 使用了服务端响应的Date首部,没有使用Last-Modified首部。整个框架没有使用Last-Modified首部。这与 Http 语义不符。

 

http://blog.csdn.net/richie0006/article/details/47069635

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值