Для самой последней версии 2.71828 Это ваш ответ.
Q1 : У него нет кеша на локальном диске?
A1 : в Picasso есть кеширование по умолчанию, и поток запросов такой же
App -> Memory -> Disk -> Server
Везде, где они впервые встретили свое изображение, они будут использовать это изображение, а затем остановят поток запросов. А как насчет потока ответов? Не волнуйтесь, вот оно.
Server -> Disk -> Memory -> App
По умолчанию они сначала сохраняются на локальном диске для расширенного кэша хранения. Затем память для экземпляра использования кеша.
Вы можете использовать встроенный индикатор в Picasso, чтобы увидеть, где формируются изображения, включив его.
Picasso.get().setIndicatorEnabled(true);
В левом верхнем углу ваших изображений появится флажок.
- Красный флаг означает, что изображения поступают с сервера. (Без кеширования при первой загрузке)
- Синий флаг означает, что фотографии взяты с локального диска. (Кэширование)
- Зеленый флаг означает, что изображения взяты из памяти. (Кэширование экземпляра)
Q2 : Как включить кэширование диска, если я буду использовать один и тот же образ несколько раз?
A2 : Вам не нужно его включать. Это по умолчанию.
Что вам нужно сделать, так это ОТКЛЮЧИТЬ, если вы хотите, чтобы ваши изображения всегда были свежими. Есть 2 способа отключения кеширования.
- Набор
.memoryPolicy()
для no_cache и / или NO_STORE и поток будет выглядеть следующим образом .
NO_CACHE пропустит поиск изображений в памяти.
App -> Disk -> Server
NO_STORE пропустит сохранение изображений в памяти при первой загрузке изображений.
Server -> Disk -> App
- Набор
.networkPolicy()
для no_cache и / или NO_STORE и поток будет выглядеть следующим образом .
NO_CACHE пропустит поиск изображений с диска.
App -> Memory -> Server
NO_STORE пропустит сохранение изображений на диске при первой загрузке изображений.
Server -> Memory -> App
Вы не можете ОТКЛЮЧИТЬ ни то, ни другое для полного отсутствия кеширования изображений. Вот пример.
Picasso.get().load(imageUrl)
.memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE)
.networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE)
.fit().into(banner);
Поток полностью без кеширования и без сохранения будет выглядеть так.
App -> Server //Request
Server -> App //Response
Таким образом, вам может потребоваться это также, чтобы минимизировать использование хранилища вашего приложения.
В3 : нужно ли мне добавить разрешение на диск в файл манифеста Android?
A3 : Нет, но не забудьте добавить разрешение INTERNET для вашего HTTP-запроса.