Мигание/перезагрузка ресурса Android при использовании ошибки Glide() и последующих неудачных вызовах

#android #android-glide

Вопрос:

Я хочу указать какой-либо ресурс Android, который будет отображаться, когда Glide не сможет загрузить целевое изображение из Интернета, поэтому я использую этот error() метод. Моя проблема в том, что при сбое последующих load() s интернет-изображений файл ресурсов отображается все время, но с видимым миганием (например, при перезагрузке) после каждого вызова load() . Я не хочу, чтобы это мигание было видно.

Мой код прост:

 GlideApp.with(fragment)
        .load(imageUrl)
        .error(resourceId)
        .into(view)
 

Что происходит:

 1. Trying to load url1 -> fail -> resource with resourceId is displayed
2. Trying to load url2 -> fail -> blink -> resource with resourceId is displayed
3. Trying to load url3 -> fail -> blink -> resource with resourceId is displayed
 

В таком случае я хотел бы видеть неподвижное изображение, не моргая.
Интересно то , что когда я использую placeholder() вместо error() , для неудачной загрузки этих URL-адресов, я получаю неподвижное изображение-заполнитель, не мигая:

 GlideApp.with(fragment)
        .load(imageUrl)
        .placeholder(resourceId)
        .into(view)
 

Еще один интересный факт, который я обнаружил, заключается в том, что без попыток загрузки URL-адресов из Интернета, просто пытаясь отобразить ресурс Android (resourceId), также не мигает после последующих вызовов:

 GlideApp.with(fragment)
        .load(resourceId)
        .into(view)
 

Таким образом, похоже, что проблема (мигание/перезагрузка) видна только при использовании error() метода.

Все resourceId значения в приведенных выше примерах являются одним и тем же ресурсом.

РЕДАКТИРОВАТЬ: В этом случае воспроизводится точно то же самое:

 GlideApp.with(fragment)
        .load(imageUrl)
        .error(ColorDrawable(Color.RED))
        .into(view)
 

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

1. Это также воспроизводится с изображениями, загруженными по http (внутренняя ошибка ()), а не только с рисоваемыми ресурсами Android.

2. Такое же мигание можно увидеть при использовании только .error(ColorDrawable(Color.RED))