【发布时间】:2016-06-29 19:58:31
【问题描述】:
我正在使用volley 库来执行网络操作以加快速度。我的问题是 Volley 是否执行顺序或并行添加到队列中的请求。
假设我添加像 Req1, Req2, Req3 这样的请求,它们会开始并行运行还是第二个请求会等到第一个完成??
【问题讨论】:
我正在使用volley 库来执行网络操作以加快速度。我的问题是 Volley 是否执行顺序或并行添加到队列中的请求。
假设我添加像 Req1, Req2, Req3 这样的请求,它们会开始并行运行还是第二个请求会等到第一个完成??
【问题讨论】:
Volley 维护多个网络线程。如果一个线程没有做任何事情,那么它将在队列中执行一项工作。
为了回答您的问题,Req1、Req2 和 Req3 将分别放在一个工作线程中并并行运行。
Volley 还会缓存你下载的数据(并根据下载数据的 HTTP 头中的过期时间来决定是否重新下载),所以如果你的数据不需要再次下载,则从缓存中获取,比重新下载要快。
这些是宣称 Volley 比标准网络操作更快的一些原因,因为它适合使用它的情况。当然,您可以自己实现它,但 Google 已经为您做了很多艰苦的工作。
【讨论】:
通常一个队列会根据它的排队顺序开始每个操作,除非它是一个priority队列。
因此,假设同等优先级(假设 Volley 队列是非优先级队列),我们可以得出结论,Req1 将首先开始。然后是Req2,然后是Req3。
但是,我们可以不保证每个完成的顺序。如果Req1 很耗时,那么请求将以不同于Req1、Req2、Req3 的顺序完成。
我们只能保证它们会按照Req1、Req2、Req3的顺序启动。
【讨论】: