各位看官们,大家好,上一回中咱们说的是Android中Volley的例子,这一回中咱们继续说此例子。闲话休提,言归正转。让我们一起Talk Android吧!
看官们,我们在上一章回中介绍了Volley的用法,本章回将分析一下它的原理。
Volley创建了请求队列用来管理多个请求,同时它还创建了三个线程用来发起和响应请求。当我们使用add()方法把请求添加到请求队列中后,Volley会运行一个缓存处理线程(cache thread)
和一个网络调度线程池(network threads
)。主线程(main thread)
将请求添加到请求队列后,缓存线程会获取该请求并对其进行分类:如果该请求可以通过缓存处理,系统会在缓存线程上解析缓存的响应,并在主线程(main thread)上传送解析后的响应。如果该请求无法通过缓存处理,则系统会将其放置到网络队列中。网络调度线程池会把第一个可用的网络线程会从网络队列中取出,然后发起请求并且在网络线程上解析服务器对请求的响应,最后将响应写入缓存,缓存再把解析后的响应发送回主线程。
这是从发起请求到获得请求响应的整个过程(生命周期),下面是该过程的图形描述(来自官网):
我对Volley的三个线程做了总结:
- 1.网络线程是核心,它负责发起请求和解析服务器对请求的响应;
- 2.网络线程相当于主线程的一个子线程,多个网络线程通过网络线程池管理,主要用来处理多个请求(并发);
- 3.缓冲线程是网络线程的助手,在网络线程运行前它会对请求进行分类和处理;在网络线程解析完请求的响应后会把请求的响应发给主线程;
- 4.主线程主要做两件事:把请求添加到请求队列,接收请求的响应;
看官们,关于Volley的原理就介绍到这里,如果有看官感兴趣,那么可以去看Volley的源代码。我们在这里就不详细介绍了,毕竟源代码不是一个章回可以介绍完的。此外看源码时就会发现Volley封装了HttpURLConnection
类相关的操作,我们可以将Volley理解成HttpURLConnection类的超级封装。
看官们,关于Android中Volley的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!