Android 网络编程(4): 从源码解析Volley

630 查看

1.Volley结构图

20160410192617387

从上图可以看到Volley分为三个线程,分别是主线程、缓存调度线程、和网络调度线程,首先请求会加入缓存队列,如果发现可以找到相应的缓存结果就直接读取缓存并解析,然后回调给主线程;如果在缓存中没有找到结果,则将这条请求加入到网络队列中,然后发送HTTP请求,解析响应并写入缓存,并回调给主线程。

2.从RequestQueue入手

我们都知道使用Volley之前首先要创建RequestQueue:

这也是volley运作的入口,看看newRequestQueue:

连续调用了两个重载函数,最终调用的是:

可以看到如果android版本大于等于2.3则调用基于HttpURLConnection的HurlStack,否则就调用基于HttpClient的HttpClientStack。并创建了RequestQueue,调用了start()方法: