Изображение Captcha не может быть обновлено с помощью Glide

Я попытался использовать Glide для загрузки изображения Captcha в ImageView. Первый раз загружается нормально. Однако, когда я перезагружаю изображение Captcha в тот же ImageView, ImageView не обновляется до нового изображения. Кто-нибудь знает, как решить эту проблему?

String url = "https://captcha_path";
ImageView imgView = (ImageView)getActivity().findViewById(R.id.imgView);

Glide.with(getActivity()).load(url).asBitmap().diskCacheStrategy(DiskCacheStrategy.NONE).into(imgView);

person user3288747    schedule 10.11.2014    source источник


Ответы (2)


Вы всегда можете использовать Glide.clear(), а затем снова вызовите Glide.with(...).load(). Если ваш URL-адрес не меняется при изменении изображения, вам также может потребоваться добавить .skipMemoryCache(true) к вашему вызову загрузки. Для большего контроля ознакомьтесь с .signature() API. Вы всегда можете сделать что-то вроде:

Glide.with(fragment)
    .load(url)
    .signature(new StringSignature(UUID.randomUUID().toString()))
    .into(imgView);
person Sam Judd    schedule 11.11.2014
comment
Я пытаюсь использовать Glide.clear(imageView). ImageView (метод imageView.getTag()) включает тег TAG = com.bumptech.glide.request.GenericRequest@425455e0, но Glide не очищает вид и не обновляет изображение (адрес тот же). Добавь подпись - нормально работает. Спасибо. - person AndreyNik; 11.11.2014
comment
Без обезьяны, вы правы. Я использовал .skipMemoryCache(true), и он работал нормально. Однако я столкнулся с другой проблемой. Когда я загружаю изображение капчи, иногда оно может отображаться в ImageView. Иногда это невозможно, но без каких-либо исключений. Есть идеи? - person user3288747; 14.11.2014
comment
Посетите страницу отладки в вики проекта и рассмотрите возможность создания проблемы, если вы можете воспроизвести ее надежно: github.com/bumptech/glide/wiki/Debugging-and-Error-Handling - person Sam Judd; 14.11.2014
comment
.signature работал нормально, но каковы последствия его использования? и что он делает на самом деле? - person Alaa; 26.09.2015
comment
Подпись изменяет ключ в памяти и дисковом кеше. Таким образом, использование новой случайной подписи каждый раз эффективно отключает как дисковый кеш, так и кеш памяти. Вы можете использовать DiskCacheStrategy.NONE, но этого недостаточно, поскольку ключ кэша памяти все еще может совпадать. skipMemoryCache будет пропускать только проверку кеша памяти, не проверяя активные ресурсы, поэтому этого тоже недостаточно, даже в сочетании с DiskCacheStrategy.NONE. - person Sam Judd; 12.10.2015
comment
Создание этой подписи каждый раз замедляет работу. Должен быть лучший способ - person The Fluffy T Rex; 22.04.2020

Glide.with(fragment)
    .load(url)
    .signature(new StringSignature(UUID.randomUUID().toString()))
    .into(imgView);

Замените StringSignature на ObjectKey (для Glide v4)

Glide.with(fragment)
        .load(url)
        .signature(new ObjectKey(UUID.randomUUID().toString()))
        .into(imgView);
person Rohan Taneja    schedule 22.10.2017
comment
Создание этой подписи каждый раз замедляет загрузку. Должен быть лучший способ - person The Fluffy T Rex; 22.04.2020