Android - используйте пикассо для загрузки изображения без сохранения его в кеш

Я хочу использовать picasso для загрузки изображения с URL-адреса в местозаполнитель, но не хранить это изображение в кеше - другими словами, я хочу, чтобы изображение загружалось из сети прямо на диск, а затем загружалось с диска, когда необходимо. Я понимаю, что существует класс под названием RequestCreator, где вы можете указать политику памяти - есть ли у кого-нибудь пример использования picasso/requestcreator, чтобы сделать что-то вроде этого?

Итак.. что-то вроде:

RequestCreator requestCreator = new RequestCreator();
requestCreator.memoryPolicy(MemoryPolicy.NO_CACHE);
....

сливается с:

Picasso.with(context).load(someurl).fit().placeholder(someplaceholder).into(sometarget)..

Ответ 1

Picasso поддерживает это skipMemoryCache() в построителе Picasso. Пример показан ниже.

Picasso.with(context).load(imageUrl)
                .error(R.drawable.error)
                .placeholder(R.drawable.placeholder)
                .skipMemoryCache()
                .into(imageView);

С помощью нового API вы должны использовать его так, чтобы он пропускал поиск и сохранял его в кеше:

Picasso.with(context).load(imageUrl)
            .error(R.drawable.error)
            .placeholder(R.drawable.placeholder)
            .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
            .into(imageView);

NO_CACHE

Просканирует поиск кеша памяти при обработке запроса.

NO_STORE

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

Ответ 2

Для picasso:2.71828 или более picasso:2.71828 версии используйте следующее для пропуска с использованием дискового кэша networkPolicy(NetworkPolicy.NO_CACHE):

  Picasso.get()
            .load(camera_url)
            .placeholder(R.drawable.loader2)
            .networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE)
            .into(img_cam_view);

Ответ 3

просто добавьте это в конце URL.

"?=" + System.currentTimeMillis();