2016-09-27 70 views
0

我正在开发Android应用程序的通用库,并使用Volley通过网络发送请求。 来自同一问题的两个问题:用户多次点击Button,并且请求排队的次数是用户点击Button(它指向相同的用户XP问题)的次数。防止Volley同时发送同一请求

我想解决两个问题的问题在物联网客户端:

如何使用Volley为了不排队相同的请求两次?

回答

1

如何使用Volley为了不排队相同的请求两次?

排球没有方法与其RequestQueue(除add()cancelAll()finish())相互作用。

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

您可以将排队的请求添加到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; 
} 
相关问题