Удалить запросы, оставшиеся в очереди после отмены - PullRequest
0 голосов
/ 24 июня 2018

В приведенном ниже коде после CancelAll и Stop запрос, добавленный впоследствии в очередь, будет немедленно выполнен после команды запуска.

Как я могу удалить последний запрос / запросы, которые были вставлены в очередь?

    final  RequestQueue queue = Volley.newRequestQueue(this);
    String url ="";

    // Request a string response from the provided URL.
    StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                    Log.d("response", response);
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d("VolleyError", error.toString());
        }
    });

    // Add the request to the RequestQueue.

    stringRequest.setTag("a");
    queue.cancelAll("a");
    queue.stop();
    queue.add(stringRequest);
    queue.start();

1 Ответ

0 голосов
/ 24 июня 2018

Поскольку ваша queue ссылка является локальной переменной, вам нужно переместить ее наружу, и поскольку вы используете ее в действии, объявите ее как

private RequestQueue queue;

..oncreate(..){
    //... code
    queue = Volley.newRequestQueue(this);
}

и создайте отдельный метод для отмены всех запросовкак

void cancelAllQueuedRequests(){
    queue.cancelAll("a");
    queue.stop();
    queue.start();
}

звоните cancelAllQueuedRequests куда хотите и добавляйте запросы вот так

String url ="some url";

// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

                Log.d("response", response);
            }
        }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        Log.d("VolleyError", error.toString());
        cancelAllQueuedRequests();
    }
});

// Add the request to the RequestQueue.

stringRequest.setTag("a");
queue.add(stringRequest);
//queue.start(); no need
...