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

时间:2014-03-30 12:45:18

标签: android android-volley

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

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

1 个答案:

答案 0 :(得分:25)

你可能会混淆两件事:

  • wating queue size
  • 最大并行网络请求

等待队列大小:

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

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

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构造函数进行更改。