防止 Volley 同时发送相同的请求
Preventing the same request from being sent simultaneously by Volley
我正在为 Android 应用程序开发一个通用库,我正在使用 Volley 通过网络发送请求。
来自同一问题的 2 个问题:用户多次单击 Button
并且请求排队用户单击 Button
的次数(这指向同一用户 XP 问题)。
我希望在客户端解决两个问题:
- UI - 具有点击定时器阈值的通用按钮,因此
用户不能点击
Button
太多次。这是和例子
一个实现:
How to avoid multiple button click at same time in android?
- 作为 Rest Client 的 Volley 应该持有必要的信息,以便处理来自同一操作的多个请求。
如何使用 Volley 才能避免对同一请求排队两次?
How can I use Volley in order to not queue the same request twice?
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;
}
我正在为 Android 应用程序开发一个通用库,我正在使用 Volley 通过网络发送请求。
来自同一问题的 2 个问题:用户多次单击 Button
并且请求排队用户单击 Button
的次数(这指向同一用户 XP 问题)。
我希望在客户端解决两个问题:
- UI - 具有点击定时器阈值的通用按钮,因此
用户不能点击
Button
太多次。这是和例子 一个实现: How to avoid multiple button click at same time in android? - 作为 Rest Client 的 Volley 应该持有必要的信息,以便处理来自同一操作的多个请求。
如何使用 Volley 才能避免对同一请求排队两次?
How can I use Volley in order to not queue the same request twice?
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;
}