【问题标题】:Does Volley library handles all the request sequentiallyVolley 库是否按顺序处理所有请求
【发布时间】:2016-06-29 19:58:31
【问题描述】:

我正在使用volley 库来执行网络操作以加快速度。我的问题是 Volley 是否执行顺序或并行添加到队列中的请求。

假设我添加像 Req1, Req2, Req3 这样的请求,它们会开始并行运行还是第二个请求会等到第一个完成??

【问题讨论】:

    标签: android android-volley


    【解决方案1】:

    根据Volley documentation

    Volley 维护多个网络线程。如果一个线程没有做任何事情,那么它将在队列中执行一项工作。

    为了回答您的问题,Req1、Req2 和 Req3 将分别放在一个工作线程中并并行运行。

    Volley 还会缓存你下载的数据(并根据下载数据的 HTTP 头中的过期时间来决定是否重新下载),所以如果你的数据不需要再次下载,则从缓存中获取,比重新下载要快。

    这些是宣称 Volley 比标准网络操作更快的一些原因,因为它适合使用它的情况。当然,您可以自己实现它,但 Google 已经为您做了很多艰苦的工作。

    【讨论】:

    • 注意:它们是并行运行的,但不一定是一次全部。并行化是有限制的,就像任何网络队列一样,类似于浏览器。如果您向单个服务器发出一百个请求,它将等待启动其中一些请求,以免设备网络堆栈或目标服务器过载。
    【解决方案2】:

    通常一个队列会根据它的排队顺序开始每个操作,除非它是一个priority队列。

    因此,假设同等优先级(假设 Volley 队列是非优先级队列),我们可以得出结论,Req1 将首先开始。然后是Req2,然后是Req3

    但是,我们可以保证每个完成的顺序。如果Req1 很耗时,那么请求将以不同于Req1Req2Req3 的顺序完成。

    我们只能保证它们会按照Req1Req2Req3的顺序启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 2022-01-13
      相关资源
      最近更新 更多