概述
本篇介绍网络相关的类,包括Network
,BasicNetwork
,NetworkDispatcher
。
Part 1 ——Network
表示网络请求的接口,只有一个方法,用于发起网络请求:
public NetworkResponse performRequest(Request<?> request) throws VolleyError;
Part 2 ——BasicNetwork
Volley中Network接口的默认实现。维护了两个主要成员:
HttpStack mHttpStack
:执行网络请求的接口,返回HttpResponseByteArrayPool mPool
:用于临时数据的读写和暂存
mHttpStack
发起网络请求,返回HttpResponse
,根据StateCode
,对缓存做相应的处理,然后将结果封装成NetworkResponse
并返回。
Part 3 ——HttpStack
执行网络请求的接口,有两个实现类:
HurlStack
:由HttpUrlConnection实现,API 9及以上默认使用该类。HttpClientStack
:由AndroidHttpClient实现,API 9以下默认使用该类。
Part 4 ——NetworkDispatcher
网络分发线程,继承了Thread
,维护了网络请求队列mNetworkQueue
,缓存mCache
,响应分发对象mDelivery
等,负责从网络请求队列mCacheQueue
中依次获取请求并进行处理,如果队列为空,则阻塞,直到队列不为空。
对于获取到的每个Request
,调用mNetwork
发起网络请求,将返回的请求结果NetworkResponse
转化为Response<T>
,加入缓存,最后交给mDelivery
做回调处理。