如果Volley RequestQueue完成所有任务,则回调?

时间:2013-07-18 09:11:50

标签: android android-volley

我正在使用针对android的凌空网络库。 我正在寻找一种方法来在一堆请求完成时得到通知,而不是单独检查所有响应监听器(我也这样做)。 完成所有任务后,是否有一种简单的方法可以从队列中获取回调?

2 个答案:

答案 0 :(得分:5)

将请求计数保留在成员变量中,并在每次请求完成时递减,当计数器变为0时,您就完成了!我不知道暴露的回调会跟踪所有请求并在最后回来。

int requestPending= 0;
for(int i=0;i<numberOfRequests;i++)
{
    requestQueue.add(request);
    requestPending++;
}
// For each requestQueue item finished onResponse received, do requestPending --

答案 1 :(得分:1)

我找到了另一种方式。它非常棒。

RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
  final AtomicInteger requestsCounter = new AtomicInteger(0);

  for (String data: someArray) {
    requestsCounter.incrementAndGet();

    queue.add(new StringRequest(
      Request.Method.GET,
      "https://stackoverflow.com",
      response -> {
         ...some stuff for response
      },
      error -> {
         ...catch error here
      }
  ));

  queue.addRequestFinishedListener(request -> {
      requestsCounter.decrementAndGet();

      if (requestsCounter.get() == 0) {
          ...all requests are done
      }
  });
}