【问题标题】: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;
    }
    

    【讨论】:

      猜你喜欢
      • 2019-10-05
      • 2018-12-14
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 2019-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多