我如何使用 Volley 来避免将同一个请求排队两次?
Volley 没有与其交互的方法RequestQueue
(除了add()
,cancelAll()
和finish()
)。
您可以使用反射来访问该mCurrentRequests
字段(并将您Request
与排队Request
的 s 进行比较),我不建议这样做。
您可以将排队的请求添加到 a 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;
}