Intereting Posts
NoClassDefFoundError для OkHttpClient Android 4.0.3, window.openDatabase не работает Отправка html-адреса электронной почты в android с помощью <table> и т. Д. – действительно ли нет встроенного способа Intent? Размер бара шага не работает в леденец. Но работает в зефире Ошибка анализа XML: несвязанный префикс для mapbox Android SearchView с другими элементами в ActionBar Что такое файл mainfest в android? Программный щелчок в Android WebView TargetSdkVersion не похож на манифест андроида как выбранный при создании проекта Как отключить предварительную загрузку в viewpager? Исключение FirebaseAuthInvalidCredentials при использовании «Одна учетная запись на адрес электронной почты» AudioManager отправляет сообщение обработчику по мертвой теме? Android EditText, минус, преобразованный в точечное событие, но inputType = "number | numberSigned | numberDecimal" Переполнение Webview iframe Как избежать системного убийства, когда приложение / деятельность убиты

Volley: Как настроить Cache.Entry

Я использую библиотеку Googles Volley как свой проект для получения сетевых данных;

У меня есть RequestQueue

requestQueue = new RequestQueue(new DiskBasedCache(new File(context.getCacheDir(), DEFAULT_CACHE_DIR)), new BasicNetwork(new HttpClientStack(AndroidHttpClient.newInstance(userAgent)))); 

У меня также есть подклассы Request, и данные, возвращающиеся из сети, прекрасны. Моя проблема связана с кешированием: в parseNetworkResponse (), который переопределяется в моем подклассе Request, когда я звоню

 return Response.success(list, HttpHeaderParser.parseCacheHeaders(response)); 

HttpHeaderParser.parseCacheHeaders (response) возвращает значение null, поскольку сервер настроен для «отсутствия кеширования» в заголовке ответа … Несмотря на то, что я все же хотел бы кэшировать эти данные для заданного количества часов (возможно, 24 часа), как я могу Сделайте это, создав волейбол Cache.Entry … Я понимаю, что URL-адрес используется как значение ключа кэша (и я бы хотел, чтобы он был URL-адресом).

Подводя итог, поскольку HttpHeaderParser.parseCacheHeaders (response) возвращает null, я хотел бы создать новый Cache.Entry, который устанавливается для истечения срока через 24 часа, а ключ кеша – URL-адрес запроса.

Есть предположения?

Благодаря!

У меня была такая же проблема, и я получил это решение:

 @Override protected Response<String> parseNetworkResponse(NetworkResponse response) { // Create a FakeCache that invalidate the data after 24 hour Cache.Entry mFakeCache = HttpHeaderParser.parseCacheHeaders(response); mFakeCache.etag = null; mFakeCache.softTtl = System.currentTimeMillis() + 86400 * 1000; mFakeCache.ttl = mFakeCache.softTtl; return Response.success(response.data, mFakeCache); }