【问题标题】:Preventing the same request from being sent simultaneously by Volley防止同一个请求被 Volley 同时发送
【发布时间】:2016-09-27 10:04:58
【问题描述】:
我正在为 Android 应用程序开发一个通用库,并且我正在使用 Volley 通过网络发送请求。
来自同一问题的 2 个问题:用户多次单击 Button,请求排队的次数为用户单击 Button 的次数(这指向同一个用户 XP 问题)。
我希望在客户端解决两个问题:
如何使用 Volley 来避免将同一个请求排队两次?
【问题讨论】:
标签:
java
android
queue
android-volley
request-queueing
【解决方案1】:
如何使用 Volley 来避免将同一个请求排队两次?
Volley 没有任何方法可以与其RequestQueue 交互(add()、cancelAll() 和 finish() 除外)。
您可以使用反射来访问mCurrentRequests 字段(并将您的Request 与排队的Requests 进行比较),我不建议这样做。
您可以将排队的请求添加到 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;
}