Invalidar caché en Picasso
Cargo una imagen desde el disco usando Picasso , por ejemplo, Picasso.with(ctx).load(new File("/path/to/image")).into(imageView)
pero cada vez que guardo una nueva imagen en ese archivo y actualizo miImageView
, Picasso todavía tiene el mapa de bits en caché.
¿Es posible invalidar el caché en Picasso?
En realidad, según su propia respuesta, existe una manera más fácil de hacerlo sin bifurcar la biblioteca. Agregue esta clase al paquete com.squareup.picasso.
package com.squareup.picasso;
public class PicassoTools {
public static void clearCache (Picasso p) {
p.cache.clear();
}
}
Debido a que el caché tiene visibilidad de paquetes, esta clase de utilidad puede borrar el caché por usted. Sólo tienes que llamarlo:
PicassoTools.clearCache(Picasso.with(context));
En las versiones recientes de Picasso, hay un nuevo método para invalidar, sin ninguna solución alternativa, por lo que creo que la clase personalizada PicassoTools mencionada anteriormente ahora está obsoleta en este caso.
Picasso.with(getActivity()).invalidate(file);
Cancele la verificación de la caché de memoria y de la caché de disco indicando la política de memoria mediante el indicador: emoryPolicy.NO_CACHE y NetworkPolicy.NO_CACHE como se muestra a continuación:
mPicasso.with(mContext)
.load(url)
.memoryPolicy(MemoryPolicy.NO_CACHE )
.networkPolicy(NetworkPolicy.NO_CACHE)
.resize(512, 512)
.error(R.drawable.login)
.noFade()
.into(imageView);