android - from - El oyente de Glide no funciona
glide cache image android (4)
Estoy usando Glide para cargar imágenes y agregué un escucha para saber cuándo está listo el recurso o si se produjo un error de cualquier tipo:
Glide.with(mContext)
.load(url)
.placeholder(R.drawable.glide_placeholder)
// use dontAnimate and not crossFade to avoid a bug with custom views
.dontAnimate()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
// do something
return true;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
// do something
return true;
}
})
.into(mCustomImageView);
La aplicación nunca se ejecuta dentro de onResourceReady
o onException
pero si onException
la escucha y permito que se descargue async sin devolución de llamada, se ejecuta correctamente:
Glide.with(mContext)
.load(url)
.placeholder(R.drawable.glide_placeholder)
// use dontAnimate and not crossFade to avoid a bug with custom views
.dontAnimate()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(mCustomImageView);
También intenté con GlideDrawableImageViewTarget
lugar de listener para recibir devoluciones de llamada, pero la aplicación se ejecuta dentro de onLoadStarted
pero nunca se ejecuta dentro de onLoadCleared
, onLoadFailed
y onResourceReady
.
Aquí hay una forma de hacerlo:
Glide.with(context).load(...)
.listener(object : RequestListener<Drawable> {
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {
//TODO handle error images while loading photo
return true
}
override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
//TODO use "resource" as the photo for your ImageView
return true
}
}).submit()
Parece ser un error con la visibilidad de ImageView si es invisible o desapareció. Abrí un problema aquí: https://github.com/bumptech/glide/issues/618
Se encontró con el mismo problema, porque el ancho y el alto de mi ImageView eran 0,0. Le di a mi ImageView un ancho y una altura predeterminados, esto resolvió mi problema.
Se encontró con el mismo problema. Tener onResourceReady devolver falso hizo el truco para mí.