Порядок пошуку зображення у Пікассо: кеш пам'яті -> кеш диска -> мережа
Отже, є кілька сценаріїв, якими нам потрібно скасувати кеш-пам’ять у Пікассо:
1.Застосувати кеш пам'яті:
- Usercase: Коли зображення вже оновлюється в кеш-пам'яті диска або віддаленому хості
Рішення: Очистіть кеш Url, File, Uri, якщо вони існують
mPicasso.with(appContext).invalidate(File);
mPicasso.with(appContext).invalidate(Url);
mPicasso.with(appContext).invalidate(Uri);
.
2. Вимкніть кеш пам’яті та кеш-пам’яті на Інтернеті
※ Примітка: Інтернет- середнє оновлення безпосередньо до ImageView
Випадок користувача: Зображення оновлено на віддаленому хості
Рішення. Скасуйте зображення в кеш-пам'яті та кеш-пам’яті диска, а потім запитуйте зображення на віддаленому хості
mPicasso.with(appContext)
.load(url)
.memoryPolicy(MemoryPolicy.NO_CACHE )
.networkPolicy(NetworkPolicy.NO_CACHE)
.into(imageView);
-> Скасувати кеш пам’яті та кеш-пам’ять диска
.
3. Вимкніть кеш пам’яті та дисковий кеш в автономному режимі
※ Примітка: Офлайн- середнє оновлення не оновлюється до ImageView, просто фонове завантаження для використання пізніше
※ Примітка: Використання fetch () - це добре, але воно також споживає мережеві ресурси, тому, будь ласка, уважно розгляньте, перевірте сценарій 4 нижче для кращого рішення
4. Вимкніть кеш пам’яті та дисковий кеш в автономному режимі, якщо дисковий кеш існує
- Випадок користувача: Недійсним кеш-пам’ять можна зробити лише у тому випадку, якщо він уже існує в кеш-пам’яті диска
Рішення: Перед переглядом слід перевірити диск за допомогою параметра: NetworkPolicy.OFFLINE
mPicasso.with(appContext)
.load(url)
.memoryPolicy(MemoryPolicy.NO_CACHE)
.networkPolicy(NetworkPolicy.OFFLINE)
.fetch(new Callback() {
@Override
public void onSuccess() {
picasso.load(url).fetch();
}
@Override
public void onError() {
}
});
Пікассо - це дивовижні бібліотеки, я сподіваюся, що squareup додасть більше зручності API для управління кешем у майбутньому.
Picasso.with(getActivity()).invalidate(file);
як я можу кешувати знову?