usar studio squareup sirve que para manejo librerias libreria imagenes glide dev descargar con como cargar android caching picasso

android - studio - Cargar imágenes desde el caché de disco con Picasso si está desconectado



para que sirve la libreria picasso en android studio (5)

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

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

Ahora, supongamos que el usuario cierra la aplicación y se desconecta. 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 el caché del disco (triángulo amarillo en el modo de depuración), y para las demás, Picasso muestra el marcador de posición.

¿Por qué? Estoy esperando que todas las imágenes se carguen desde el caché de disco.


¿ OkHttp y Okio presentes en la ruta de clases? (o en sus dependencias) porque, de forma predeterminada, Picasso permite que HttpClient maneje el almacenamiento en caché (no lo hace de forma predeterminada)

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);


Para evitar la creación de una instancia separada de RequestCreator como aquí , haga esto:

RequestCreator request = mPicasso.load(TextUtils.isEmpty(imageUrl) ? null : imageUrl) .placeholder(R.drawable.ic_default) .error(R.drawable.ic_default) .transform(transformations) .noFade() .centerCrop(); request .networkPolicy(NetworkPolicy.OFFLINE) .into(mImageView, new Callback.EmptyCallback(){ @Override public void onError() { super.onError(); request.into(mImageView); } });


Puede usar este código con esta estrategia. Picasso buscará imágenes en la memoria caché y, si falla, la imagen se descargará 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 verifique mi respuesta anterior, tal vez le ayude: Invalidar el caché en Picasso