Отключить управление кешем волейбола
Можно ли отключить управление кэшем Volley? Мое приложение использует библиотеку Google Volley для управления транспортным уровнем, но у меня есть собственная реализация менеджера кэша, потому что сервер не использует заголовок Cache-Control. Я хочу сохранить пространство, которое использует кеш Volley, потому что оно абсолютно бесполезно.
Есть ли простой способ? или я должен реализовать свою собственную версию RequestQueue
?
Любое предложение оценено.
Ответы
Ответ 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. перед возвратом очереди.