Как Picasso фактически кэширует изображения

Я хотел бы знать, как именно библиотека Пикассо кэширует изображения внутри приложения. Я знаю, что он использовал HttpHeaders для проверки погоды для извлечения изображений из сети.

Но есть ли временные рамки для кэширования изображений?
Как недействительный кеш через день или что-то еще?

Проблема заключается в том, что мой проект загружает огромное количество небольших изображений из сети. Несколько раз, новые изображения получили отражение в следующем запуске. Но иногда это не так.

Хуже всего то, что некоторые изображения отразились на изменениях, в то время как другие – даже при том, что изменения сделаны одновременно.
Но, когда я удаляю приложение, все изображения получили отражения изменений (конечно.)

В Пикассо должно быть что-то о кешировании.

И, пожалуйста, не говорите мне использовать OkHttp для управления кешем в Picasso.
В моем проекте используется AsyncHttpClient от Apache, и это слишком просто для обновления.
(Не я, конечно. Я бы просто создал небольшой сетевой помощник с UrlConnection вместо реализации всего AsyncHttpClient.)

В любом случае, любая идея или указатель будут оценены.
Итог: нет OkHttp. Просто хочу узнать о механизме управления кешем на Picasso.

С уважением

Solutions Collecting From Web of "Как Picasso фактически кэширует изображения"

Насколько я знаю, Picasso не очищает кеш сам по себе, поэтому в нашем приложении мы запускаем это «вручную». Код для этого:

private static final String PICASSO_CACHE = "picasso-cache"; public static void clearCache(Context context) { final File cache = new File( context.getApplicationContext().getCacheDir(), PICASSO_CACHE); if (cache.exists()) { deleteFolder(cache); } } private static void deleteFolder(File fileOrDirectory) { if (fileOrDirectory.isDirectory()) { for (File child : fileOrDirectory.listFiles()) deleteFolder(child); } fileOrDirectory.delete(); } 

Вы можете запускать этого сотрудника по очистке один раз в день / неделю, в зависимости от того, что вам нужно в вашем приложении.

Пикассо имеет только кеш памяти.

Если изображение находится в кеше памяти, оно использует его. В противном случае, когда изображение загружается из своего удаленного источника (сеть, поставщик контента, файловая система и т. Д.), Он помещается в кеш памяти для будущих поисков.

Кэш памяти – это LRU, поэтому чем больше используется изображение, тем больше вероятность, что он останется в кеше. Изображения, которые не запрашиваются часто, будут выселены с течением времени. Не существует выселения за время, и кеш памяти не соблюдает семантику кэширования любых HTTP-заголовков (если изображение было из сети).

В Picasso нет дискового кеша. Он использует HTTP-клиент (в зависимости от того, что используется) для 100% этой функции. Кэш будет установлен как для OkHttp, так и для HttpUrlConnection (если он используется) автоматически или если он уже используется.

Если вы используете пользовательский HTTP-клиент, бремя включения кеша на вас – вызывающий.