Volley的主要特点:
1.扩展性强.Volley中大多数都是基于接口的设计,可配置性强.
2.一定程度符合Http规范,包括返回ResponseCode的处理,请求头的处理,缓存机制的支持等.并支持重试及优先级定义.
3.默认Android2.3及以上基于HttpURLConnection,2.3以下基于HttpCllient.
4.提供简便的图片加载工具.
Volley主要是通过两种Dispatch Thread
不断从RequestQueue
中取出请求,根据是否已缓存调用Cache
或Network
这两类数据获取接口之一,从内存缓存或是服务器取得请求的数据,然后交由ResponseDelivery
去做结果分发及回调处理。
Volley 的调用比较简单,通过 newRequestQueue(…) 函数新建并启动一个请求队列RequestQueue
后,只需要往这个RequestQueue
不断 add Request 即可。
Volley:Volley 对外暴露的 API,通过 newRequestQueue(…) 函数新建并启动一个请求队列RequestQueue
。
Request:表示一个请求的抽象类。StringRequest
、JsonRequest
、ImageRequest
都是它的子类,表示某种类型的请求。
RequestQueue:表示请求队列,里面包含一个CacheDispatcher
(用于处理走缓存请求的调度线程)、NetworkDispatcher
数组(用于处理走网络请求的调度线程),一个ResponseDelivery
(返回结果分发接口),通过 start() 函数启动时会启动CacheDispatcher
和NetworkDispatchers
。
//----------------------------------------------------------------------------------------------
Volley.java是个工具类,作用是构建一个可用于添加网络请求的RequestQueue对象.
Volley.java 有两个重载的静态方法。
public static RequestQueue newRequestQueue(Context context)
public static RequestQueue newRequestQueue(Context context, HttpStack stack)
第一个方法的实现调用了第二个方法,传 HttpStack 参数为 null。
第二个方法中,如果 HttpStatck 参数为 null,则如果系统在 Gingerbread 及之后(即 API Level >= 9),采用基于 HttpURLConnection 的 HurlStack,如果小于 9,采用基于 HttpClient 的 HttpClientStack。
RequestQueue.java:Volley框架的核心类,将请求Request加入到一个运行的RequestQueue里面,来完成请求操作.