que actualmente tiene un ListView con un adaptador personalizado que obtiene información que describe el contenido de las filas de forma asíncrona. Parte de cada fila es una URL de imagen, que planeo descargar de forma asincrónica y luego mostrar.ListView estrategia de carga asíncrona imagen
Mi plan actual de una estrategia para descargar estas imágenes es:
- Mantener un caché de referencias a objetos de mapa de bits blandos descargados.
- Cuando un getView() es llamado y el mapa de bits está en la caché, defina el mapa de bits para el ImageView directamente.
- Si el mapa de bits no está en la caché, comenzará a cargar en un hilo separado, después de la descarga se ha completado añadir a la caché y llamar notifyDataSetChanged() en el adaptador.
También estoy planeando matar descargas pendientes cuando el objeto Actividad poseer OnDestroy del ListView() - Método (o posiblemente incluso en el onPause() - Método) se llama, pero lo más importante que quiero matar a la descarga de imágenes pendientes cuando la fila desaparece de la pantalla. De hecho, es posible que solo cancele la descarga después de un breve retraso, por lo que puede reanudarse sin perder ancho de banda si la fila vuelve a aparecer en pantalla rápidamente.
Yo, sin embargo, estoy seguro de algunas cosas:
- ¿Cuál es la mejor manera de detectar cuando una fila va fuera de la pantalla para que pueda cancelar la descarga?
- está llamando notifyDataSetChanged() lo mejor que puede hacer después de la descarga se ha completado o hay una mejor manera?
También agradeceríamos cualquier comentario sobre la estrategia completa.
Un caso de esquina en el que pensé es que una fila podría salir de la pantalla y nunca volver a usarse. Entonces nunca tendría la oportunidad de cancelar la descarga. – JPvdMerwe
bastante improbable. Las vistas son reutilizadas de manera bastante rigurosa por ListView ... Podría ser simplemente "ligeramente fuera de la pantalla" (las vistas no se reutilizan inmediatamente cuando se mueven 1 píxel detrás de la pantalla), pero esto en realidad podría hacerte "corto". retrasar el "comportamiento de forma gratuita". –