首页 > 代码库 > volley浅析

volley浅析

volley是google在2013年推出的一个多线程网络访问框架。想了解更多的可以google,下面切入正题,来说说volley的整个框架思想和结构。
一、android网络服务场景
在android应用中,网络请求作为最常用的功能之一

1、请求协议类型多样化:http、https、socket;

 

2、请求方式(针对部分协议)多样化:options、head、get、post、put、delete、trace、connect;


3、请求的参数类型与响应数据类型多样;

 

4、多请求同时并发;

 

5、对请求的健壮性要求较高,要保证请求执行的性能、请求结果及时反馈与相应异常处理;

 

6、需对请求任务生命周期和所占资源进行管理(与activity和fragment生命周期联动),以确保性能与程序的稳定性。

 

二、Volley核心是对Request的分发与处理,在结构上主要面向接口构建,注重自身的轻便性与功能扩展的灵活性。
简要分析下整个请求流程:


1、UI Thread 创建Request、设置Request的优先级并将Request添加到RequestQueue中进行相关处理;

 

2、在RequestQueue中,会根据Request的是否可缓存将Request放到真正的队列CacheQueue或NetworkQueue;

 

3、CacheDispatcher从CacheQueue中根据优先级循环取出Request,然后查询缓存,如果有可用缓存则用Delivery将Request和Response一起返回给UI Thread,如果没有有效缓存则将Request重新添加到NetworkQueue中;

 

4、NetworkDispatcher从NetworkQueue中根据优先级取出Request进行网络请求,请求完成后如果失败则根据RetryPolicy进行重新请求尝试,如果成功则进行相应缓存处理并用Delivery将Request和Response一起返回给UI Thread;
这里面还有其它的相关处理,比如Request中断处理,这里就不一一详述了。

 

三、Volley应用方式

这个主要在toolbox下,google将一些通用的实现放在这个里面,一方面起到示范作用,一方面对于普通需求都能够满足。我们可以根据业务定制自己的实现。个人认为这一点正是这个框架思想的精髓。

 

volley浅析