本文将从三个方面来对Volley进行综述:Volley是什么?为什么要分析Volley?怎样分析Volley?
一、volley是什么?
volley,对于Android开发师,尤其是接触Android网络开发的程序员而言,并不陌生;在Google看来,volley只是一种用以传递网络数据的工具;对于一般的程序员看来,volley无非是几个封装完美的接口;然而在本文看来,volley是一种设计,一种提炼,一种流程。
上面一段话,从三个方面解释了volley是什么;然而我们可以从更本质来解释:在英语之中:volley这个单词表示群射,齐射(箭、子弹、抢、炮、等); 迸发(质问,咒骂等的);那么从这个角度上,我们可以把每一个网络请求当成一个子弹,因而volley中的网络请求将以迸发、齐射的方式进行发起。
此外,volley也包含了一套强大的缓存机制,无论是对网络请求的缓存,还是对网络响应,volley都有着良好的实现或者良好的支持;并且这种缓存本身也是建立在HTTP协议之上。
最后,Android将volley定义为一个框架,既然是一个框架,那么它可扩展性必然是良好的;而其良好的可扩展则主要承载与框架本身的良好设计之上。
说了如此之多,其实上面所述皆可总结成一句话:volley是一个可扩展的,具有良好缓存机制的,以迸发方式处理网络请求的网络框架。
二、为什么要分析Volley?
在google的官网上,主要总结了Volley八个好处,分别如下:
1、网络请求的自动调度;如何自动调度?在Android之中,或者Java之中最好的方式无疑是线程,而Volley之中自然也是使用的此种方式,而除了线程作为基础,Volley自然也定义了一些列相应的流程,要了解这些线程及相关流程的定义,最好的方式自然就是直接分析Volley框架。
2、多个并发的网络连接;每个网络的连接,都可看作是一个网络请求的流程,而不同流程之间的并发处理,在Volley的源码之中也有相应的处理。
3、透明的硬盘-内存响应缓存机制,该机制与HTTP协议缓存机制具有紧密的耦合;这一特点是Volley源码之中的另一侧重点(还有一个侧重点就是并发网络连接的实现),分析Volley源码即可知道这一机制是如何实现。
4、支持请求的优先级;
5、能够取消请求,或者批次量取消一组请求;
6、灵活的扩展,例如可以个性化定制Volley的重连机制;
7、能够更容易的通过从网络上异步获取的数据,来正确的将其解析成一个UI;例如一张图片,一个字符串等;volley则通过不同的解析Response策略来实现这一特点;
8、良好的调试及跟踪(本系列文章不讨论次特点);
三、怎样分析Volley?
本系列将通过五篇文章详细分析Volley框架的源码实现,目录如下:
1、【进阶android】Volley源码分析——Volley的流程;
2、【进阶android】Volley源码分析——Volley的线程;
3、【进阶android】Volley源码分析——Volley的缓存;