Как сообщить Пикассо, что изображение в ссылке изменилось?

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

Я пытался использовать: .skipMemoryCache(), но это не было идеальным решением...

Есть ли способ проверить, есть ли новое изображение в той же ссылке, используя picasso? Спасибо!


person Fringo    schedule 22.08.2014    source источник
comment
Пожалуйста, обратитесь к этому stackoverflow.com/a/36639357/4749098   -  person Anand Savjani    schedule 06.12.2016


Ответы (3)


По-видимому, в текущей (2.3.2) версии Picasso нет API для достижения этой цели (но работа в процессе — см. это ошибка).

Кроме того, если у вас есть контроль над серверной частью, вы можете подумать о своем дизайнерском решении предоставить изменяющееся изображение профиля по постоянному URL-адресу.

Альтернативой может быть: Включите текущий URL-адрес изображения профиля в информацию о профиле, которую вы извлекаете. Таким образом, ваш кеш может использовать кешированное изображение, и как только в информации профиля будет указан новый URL-адрес, Picasso получит его. Во всех остальных случаях Picasso может использовать кеш.

person Patrick    schedule 22.08.2014
comment
Понравилось альтернативное решение =) - person Fringo; 23.08.2014

Я получил ответ по этой ссылке

измените свой URL, как показано ниже:

String imageurl = url + "?time=" + System.currentTimeMillis();

Picasso.with(getContext()).load(imageurl).into(imageView);

это сработало для меня. спасибо

person Nabeel K    schedule 03.01.2016
comment
Окончательное решение - person Shabbir Dhangot; 18.11.2016
comment
Он будет каждый раз загружать одно и то же изображение и потреблять больше мобильных данных. - person Anand Savjani; 06.12.2016
comment
Это решение работает только в том случае, если вы хотите перезагружать каждый раз, и в этом случае лучше использовать другие ответы на этот вопрос. Учитывая, что нам нужны новые изображения только при изменении изображения, это не лучшее решение. :/ - person MGDavies; 11.09.2017

Одним из решений является аннулирование кеша следующим образом.

Picasso.with(context).invalidate(imagePath);

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

Picasso.with(context)
        .load(imagePath)
        .networkPolicy(NetworkPolicy.NO_CACHE)
        .into(userAvatar);
person Kiran Ruth R    schedule 30.11.2015