0

我正在为 Android 应用程序开发一个通用库,并且我正在使用 Volley 通过网络发送请求。来自同一问题的 2 个问题:用户点击了Button几次,并且请求在用户点击的次数中排队Button(这指向同一个用户 XP 问题)。

我希望在客户端的两个问题上解决这个问题:

  • UI - 通用按钮,在单击时具有计时器阈值,因此用户不能单击Button太多次。这是一个实现的示例: 如何避免在 android 中同时单击多个按钮?
  • Volley 作为 Rest Client 应该保存必要的信息,以便处理来自同一操作的多个请求。

我如何使用 Volley 来避免将同一个请求排队两次?

4

1 回答 1

3

我如何使用 Volley 来避免将同一个请求排队两次?

Volley 没有与其交互的方法RequestQueue(除了add(),cancelAll()finish())。

您可以使用反射来访问该mCurrentRequests字段(并将您Request与排队Request的 s 进行比较),我不建议这样做。

您可以将排队的请求添加到 a WeakHashMap(以Request为键)并使用键集检查您的新请求是否相等(基于您的实现)。

例如:

RequestQueue requestQueue;
WeakHashMap<StringRequest, String> queuedRequests;

// ...

private boolean addRequestToQueue(StringRequest request, String tag) {
    for(StringRequest queuedRequest : queuedRequests.keySet()) {
        if(tag.equals(queuedRequest.getTag())) {
            return false;
        }
    }

    request.setTag(tag);
    requestQueue.add(request);
    queuedRequests.put(request, tag);

    return true;
}
于 2016-09-27T10:49:44.313 回答