2016-09-27 36 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; 
}