我正在为Android应用开发一个通用库,我正在使用Volley通过网络发送请求。
来自同一问题的2个问题:用户多次单击PartialAsync
并且请求排队了用户单击Button
的次数(指向相同的用户XP问题)。< / p>
我希望在客户方面解决两个问题:
Button
太多次。这就是例子
实施:
How to avoid multiple button click at same time in android? 如何才能使用Volley以便不对两次相同的请求进行排队?
答案 0 :(得分:2)
如何才能使用Volley以便不对两次相同的请求进行排队?
Volley无法与其RequestQueue
(add()
,cancelAll()
和finish()
除外)进行互动。
您可以使用反射来访问mCurrentRequests
字段(并将Request
与排队的Request
进行比较),我不建议这样做。
您可以将排队的请求添加到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;
}