我在 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/