Как повторно запросить, если загрузка изображения не удалась с помощью glide

#android #android-glide

#Android #android-glide

Вопрос:

Я пытаюсь загрузить несколько изображений с сервера, используя Glide

вот код

    for (String url : list) {
        RequestOptions requestOptions = RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.ALL);

        Glide.with(this)
                .asBitmap()
                .load(url).addListener(new RequestListener<Bitmap>() {
            @Override
            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
                return false;
            }

            @Override
            public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
                Log.e("ProgressCheck", "onResourceReady: "   progress);

                return false;
            }
        })
                .apply(requestOptions)
                .submit();
    }  
  

Код выполняется отлично, но при сбое загрузки изображения (по какой-либо причине отключен Wi-Fi или сервер не отвечает. и т.д.) Как отправить тот же запрос еще раз??

или есть лучший способ загрузить несколько изображений с помощью Glide

Комментарии:

1. Может ли помочь onLoadFailed()?

2. нет никакого метода обратного вызова onResourceFailed()..

3. onLoadFailed()?

4. @VirRajpurohit хорошо, но как отправить запрос снова..

Ответ №1:

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

Вот псевдокод

 private void loadImage(String URL){
// Your Glide code
//Inside onLoadFailed call loadImage() again.
//For number of attempts you can maintain one int and increment that on every attempt.
}
  

Ответ №2:

Если стратегии ошибки или резервного варианта вам не пригодятся, то в версии 4.3.0 вы можете запустить новый запрос при сбое:

 Glide.with(fragment)
  .load(url)
  .error(
      Glide.with(fragment)
        .load(url))
        .into(imageView);
  

Узнайте больше на https://bumptech.github.io/glide/doc/options.html#starting-a-new-request-on-failure

Комментарии:

1. что произойдет, когда fallbackUrl запрос не удался?

2. @code4rox Вы прочитали ссылку, которую вы загружаете в резервном варианте? Резервные чертежи отображаются, когда запрошенный URL / модель равна нулю. Основная цель резервных чертежей — позволить пользователям указывать, ожидается ли это. Например, пустой URL профиля может указывать на то, что пользователь не установил фотографию профиля и что следует использовать значение по умолчанию. Однако значение null также может указывать на то, что метаданные недействительны или не могут быть восстановлены. По умолчанию Glide обрабатывает нулевые URL-адреса / модели как ошибки, поэтому пользователи, ожидающие null, должны установить для резервного копирования Drawable.

3. Стратегии, показанные @Vir Rajpurohit, не нужны. Если вы загружаете изображения с URL-адресов, Glide может автоматически помочь вам справиться с ненадежными сетевыми подключениями, отслеживая состояние подключения пользователей и перезапуская неудачные запросы при повторном подключении пользователей. Если Glide обнаружит, что ваше приложение имеет ACCESS_NETWORK_STATE, Glide автоматически отслеживает состояние подключения, и никаких дальнейших изменений не требуется. Опять же, на основе официальной документации XD

4. Что касается мониторинга подключения, в некоторых случаях вам нужно провести пальцем, чтобы перезагрузить свой URL-адрес при восстановлении Интернета: bumptech.github.io/glide/doc /…