Cargar imágenes de la caché de disco con Picasso si está fuera de línea

Tengo algunas imágenes que descargo de diferentes sitios web cuando se inicia la aplicación, haciendo esto:

Picasso.with(context).load(image_url).fetch(); 

Ahora, supongamos que el usuario cierra la aplicación y se desactiva. Cuando la aplicación se inicia de nuevo, Picasso muestra las imágenes de esta manera:

 Picasso.with(ctx).load(image_url).placeholder(R.drawable.ph).into(imageView); 

El problema es que algunas imágenes se cargan desde la caché del disco (triángulo amarillo en el modo de depuración), y para los otros Picasso muestra el marcador de posición.

¿Por qué? Estoy esperando que cada imagen se carga desde la caché de disco.

Puedes usar este código por esta estrategia Picasso buscará imágenes en caché y si falló sólo entonces la imagen será descargada a través de la red.

  Picasso.with(context) .load(Uri.parse(getItem(position).getStoryBigThumbUrl())) .networkPolicy(NetworkPolicy.OFFLINE) .into(holder.storyBigThumb, new Callback() { @Override public void onSuccess() { } @Override public void onError() { // Try again online if cache failed Picasso.with(context) .load(Uri.parse(getItem(position) .getStoryBigThumbUrl())) .placeholder(R.drawable.user_placeholder) .error(R.drawable.user_placeholder_error) .into(holder.storyBigThumb); } }); 

Hacer esto:

 Picasso.with(this) .load(url) .networkPolicy(NetworkPolicy.OFFLINE) .into(imageView); 

También compruebe mi respuesta anterior, tal vez le ayudará: Invalidar caché en Picasso

OkHttp y Okio están presentes en el camino de clase? (O en sus dependencias) Debido a que por defecto Picasso permite al HttpClient manejar el almacenamiento en caché (no lo hace por defecto)

Tienes 2 opciones

  • Incluir las dependencias mencionadas (recomendado)
  • Especifique el caché manualmente

Esta lógica funcionó para mí:

 if network is available: Picasso.with(context).load(image).into(imageView); else: Picasso.with(context).load(image).networkPolicy(NetworkPolicy.OFFLINE).into(imageView); 
  • Obtener imagen uri de picasso?
  • Android: cargar archivo svg desde la web y mostrarlo en la vista de imagen
  • ¿Cómo evitar que Picasso recargue imágenes en RecyclerView?
  • RecyclerView con GridLayoutManager y Picasso mostrando imagen incorrecta
  • Mostrar una imagen "Cargando ..." mientras carga el fondo de la imagen con Picasso
  • Java.lang.IllegalArgumentException: La ruta no debe estar vacía en Picasso
  • Android: crear imagen circular con picasso
  • Uso de Picasso para cargar una imagen en un mapa de bits
  • Error de JNI en la animación de transición de escena - Capa supera el máximo
  • Android: utilice picasso para cargar imágenes sin almacenarlas en caché
  • Utilice Picasso para colocar la imagen en dibujable
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.