Picasso: cómo cancelar todas las peticiones de imagen hechas en un adaptador

Como de costumbre utilizamos un adaptador para llenar un listView. En el adaptador utilizamos picasso para cargar las imágenes. Veo que como las filas se reciclan al cargar una imagen en un objetivo (imageView) picasso cancelará automáticamente las solicitudes para ese objetivo.

¿Cómo se cancela todas las solicitudes pendientes al dejar el fragmento o la actividad?

Esta respuesta puede llegar un poco tarde, pero tal vez alguien todavía la necesita …

Defina un ViewHolder que proporciona un método de limpieza:

 static class ImageHolder extends RecyclerView.ViewHolder { public final ImageView image; public ImageHolder(final View itemView) { super(itemView); image = (ImageView) itemView.findViewById(R.id.image); } public void cleanup() { Picasso.with(image.getContext()) .cancelRequest(image); image.setImageDrawable(null); } } 

Implementar onViewRecycled() en su adaptador:

 static class ImageAdapter extends RecyclerView.Adapter<ImageHolder> { // ... @Override public void onViewRecycled(final ImageHolder holder) { holder.cleanup(); } } 

Cancelar las solicitudes de Picasso cuando la vista de tu Fragmento es destruida (o cuando quieras):

 public class MyFragment extends Fragment { private RecyclerView recycler; // ... @Override public void onDestroyView() { super.onDestroyView(); recycler.setAdapter(null); // will trigger the recycling in the adapter } } 

RecyclerView.setAdapter(null) ViewHolder las ViewHolder actualmente agregadas y su ViewHolder asociado será reciclado.

Pero sólo si no está en una lista / adaptador de red! Solicitar una imagen para la misma imagen view / target (por ejemplo, en un adaptador getView) lo hará automáticamente. Sólo debe cancelar (y no necesita) si está haciendo solicitudes y luego salir de la pantalla.

https://github.com/square/picasso/issues/83

También puede usar RequestCreator#tag(Object) en las solicitudes hechas por su fragmento / actividad, luego use Picasso#cancelTag(Object) para cancelar todas ellas.

  • Cómo implementar mi propia caché de disco con la biblioteca picasso - Android?
  • Almacenar imágenes en picasso con una clave de caché propia
  • Progreso de la demostración al descargar la imagen del servidor a la vista de la imagen
  • Imagen parpadeando mientras se desplaza en RecyclerView
  • ¿Cómo obtengo una paleta para mi mapa de bits una vez que Picasso Loads?
  • ¿Es posible descargar imágenes de la memoria caché en picasso?
  • Adición de bordes para imagen redondeada android
  • Borrar memoria caché de Picasso
  • Descargando la imagen del almacenamiento de firebase usando picasso: excepción de memoria
  • Picasso imagen cargando
  • ¿No soporta Picasso para descargar imágenes que utilizan el protocolo https
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.