При использовании версии 4.8.0 я столкнулся с одной из самых странных ошибок, которые я когда-либо видел.
Я использую OnePlus 3 с шириной 1080 пикселей, высотой 1940 пикселей, хотя это происходитв каждом телефоне.
Вызов:
RequestManager glide = Glide.with(ContextHelper.Companion.castActivityFromContext(getContext()));
glide
.load(imageUrl)
.error(glide.load(element.getFullImageUrl()))
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
return false;
}
})
.into(new CustomNotFlickeringViewCustomTarget(imageBanner));
(слушатель находится там для целей отладки)
Где CustomNotFlickeringViewCustomTarget
:
open class CustomNotFlickeringViewCustomTarget(private val imageView: ImageView) : CustomViewTarget<ImageView, Drawable>(imageView) {
override fun onLoadFailed(errorDrawable: Drawable?) {}
override fun onResourceCleared(placeholder: Drawable?) {
imageView.setImageDrawable(placeholder)
}
override fun onResourceReady(resource: Drawable, transition: Transition<in Drawable>?) {
imageView.setImageDrawable(resource)
}
}
Когда я пытаюсь загрузить изображение размером 1440w x 2160h , оно возвращает следующее resource
:
, котороепонятно.Ширина 1196
немного больше 1080, но она загружается плавно.
Теперь, когда я пытаюсь загрузить 1440w x 298h , это ресурс, который я получаю обратно.Конкретно 8669
ширина
Очевидно, что мое изображение имеет width = MATCH_PARENT
и height = WRAP_CONTENT
.Я не указываю высоту, потому что она переменная.
Это приводит к проблемам с памятью.
Почему изображение загружается (из удаленного источника, из кэша) больше, чем его первоначальный размер?