Ответ 1
Ответы ниже.
1) Как Android может кэшировать или не кэшировать файл и как долго?
HttpResponseCache
кэширует HTTP или HTTPS-ответ, если все верно:
-
Он был установлен через
HttpResponseCache.install()
-
setUseCaches(true)
был вызван наHttpURLConnection
илиHttpsURLConnection
-
Заголовки, возвращаемые сервером HTTP/HTTPS, позволяют кэшировать. См.
ResponseHeaders.isCacheable()
реализация для подробных подробностей.
Кэш использует стратегию LRU, заменяющую старые кешированные ответы более новыми, чтобы убедиться, что она не превышает размер выделенного диска.
2) Когда очищается кеш и кто?
Если кеш инициализируется каталогом в Context.getCacheDir()
или Context.getExternalCacheDir()
, тогда файлы обычно удаляются при удалении приложения. Кэш можно удалить вручную, вызвав HttpResponseCache.delete()
3) Как я могу переопределить механизм кэширования по умолчанию с моим собственным? И должен ли я?
См. HttpResponseCache.install()
. Если ваше приложение загружает кешируемые ресурсы через HTTP или HTTPS и не имеет собственного слоя кеширования, вам следует подумать об использовании его. Реализация Android по умолчанию HttpResponseCache
должна работать нормально.
Обратите внимание, что по умолчанию кеш не используется. Вам необходимо установить его с помощью HttpResponseCache.install()
.