Подтвердить что ты не робот

Отключить управление кешем волейбола

Можно ли отключить управление кэшем Volley? Мое приложение использует библиотеку Google Volley для управления транспортным уровнем, но у меня есть собственная реализация менеджера кэша, потому что сервер не использует заголовок Cache-Control. Я хочу сохранить пространство, которое использует кеш Volley, потому что оно абсолютно бесполезно.

Есть ли простой способ? или я должен реализовать свою собственную версию RequestQueue?

Любое предложение оценено.

4b9b3361

Ответ 1

Если вы используете любой из классов запроса по умолчанию, реализованных в volley (например, StringRequest, JsonRequest и т.д.), затем вызовите setShouldCache (false) прямо перед добавлением объекта запроса в залп RequestQueue:

request.setShouldCache(false);
myQueue.add(request);

Если у вас есть собственная реализация класса Request, вы можете вызвать setShouldCache (false) в конструкторе вашего класса.

Это решение отключает кэширование для каждого запроса отдельно. Если вы хотите отключить кеширование в глобальном масштабе из библиотеки volley, вы можете навсегда установить для переменной mShouldCache значение false в классе Request.

Ответ 2

Вы можете создать RequestQueue из конструктора и передать там NoCache в качестве первого параметрирования. Второй параметр - сетевой транспорт, основанный на вашем выборе AndroidHttpClient или HttpURLConnection.

RequestQueue queue = new RequestQueue(new NoCache(), new BasicNetwork(new HurlStack()));

Подробнее см. эту документацию.

Ответ 3

request.setShouldCache(false);

похоже, недостаточно для запросов GET. однако очистка кеша перед добавлением в очередь, похоже, помогает

myRequestQueue.getCache().clear();

Я поместил это в мой метод getRequestQueue() в одном элементе Single Volley. перед возвратом очереди.