android - Volley-Library 请求队列的最大大小是多少

标签 android android-volley

我在 Android 中使用 Volley 库,我想知道使用 Volley 库允许的最大队列大小是多少。我没有发现与此相关的任何内容。据我所知,您需要将网络请求添加到队列中,但我不知道可以将其并行放入队列的最大大小是多少。

RequestQueue requestQueue = Volley.newRequestQueue(this);
.... // block of code
requestQueue.add(jsonObjectRequest);

最佳答案

您可能混淆了两件事:

  • 等待队列大小
  • 最大并行网络请求数

等待队列大小:

/** The queue of requests that are actually going out to the network. */
private final PriorityBlockingQueue<Request<?>> mNetworkQueue =
    new PriorityBlockingQueue<Request<?>>();

Volley 使用一个 PriorityBlockingQueue,它本身使用一个初始容量为 11 的 PriorityQueue,但会自动增长,所以应该没有合理的限制。

private static final int DEFAULT_INITIAL_CAPACITY = 11;
...
public PriorityQueue() {
    this(DEFAULT_INITIAL_CAPACITY, null);
}

对于最大并行网络请求:

RequestQueue requestQueue = Volley.newRequestQueue(this);

会打电话

RequestQueue queue = new RequestQueue(new DiskBasedCache(cacheDir), network);

这个调用

public RequestQueue(Cache cache, Network network) {
        this(cache, network, DEFAULT_NETWORK_THREAD_POOL_SIZE);
    }

DEFAULT_NETWORK_THREAD_POOL_SIZE

private static final int DEFAULT_NETWORK_THREAD_POOL_SIZE = 4;

因此默认情况下有 4 个并发线程处理请求(因此最多同时请求 4 个)。


等待队列大小为 Integer.MAX 即。基本上是无限的;而最大并行网络请求数为 4,可以通过 RequestQueue 构造函数更改。

关于android - Volley-Library 请求队列的最大大小是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22744148/

相关文章:

java - 循环中的 BufferedReader

android - 为应用程序实现不同的 Material 主题。基于 Material Design 的猫头鹰应用

java - 变量在函数外丢失了它的值?

java - Volley 没有收到 http 响应,但 postman 收到了

java - Volley 库 android - getHeaders() 从未使用过 & getParams() 从未使用过

android - 是否可以检测到用户将关闭Android上的蓝牙?

android - 如何在 AOSP 中将默认位置服务设置为关闭

android - Volley 库和 HTTPS 请求

java - 从 Controller 类填充回收适配器

java - 使用 Volley 从仅包含最后一个对象的 JSON 生成列表中获取列表