¿Cuándo reciclar mapa de bits en el proyecto android?

He implementado con éxito la carga perezosa de las imágenes de la lista y los elementos de la lista en el listview de Android. Estoy usando Android 4.0 y Java 7.

El algoritmo i seguido es:

  1. Los datos de la lista (incluida la URL de la imagen) se descargan desde Internet a medida que el usuario desplaza la lista.

  2. Cuando el estado de desplazamiento está inactivo, las imágenes de la lista se cargan.

  3. En el subproceso de fondo, las imágenes se comprueban primero en la memoria caché. Si no están presentes en la caché, se descargan y se almacenan en la caché.

  4. Por último, la imagen se establece en imageview en el listview y se notifica al adaptador.

El único problema es que no tengo claro cuándo reciclar mapas de bits. Intenté usar bitmap.recyle () en muchos lugares pero conseguí el error siguiente:

Java.lang.IllegalArgumentException: No se puede dibujar bitmap reciclado

No es posible agregar ese vasto código aquí. También hay algunos problemas de privacidad. ¿Puede alguien por favor ayudarme acerca de esto?

EDITAR

El tamaño de mi aplicación aumenta de 727 KB (en el momento de la instalación) a 14 MB. Después de reciclar mis mapas de bits, en getView () de adaptador me sale " no se puede generar la textura de mapa de bits" . ¿Alguien puede sugerir cómo deshacerse de él?

Reciclar un mapa de bits lo hace inutilizable. Sólo recicle cuando esté completamente hecho con él. En su caso, eso significa que después de haber sido desalojado de la caché. También querrá asegurarse de que ninguna de sus vistas existentes lo haga referencia.

A partir de ICS la necesidad de reciclar no es necesario. Hay algunos ejemplos en los que se desea, pero teniendo en cuenta la mayoría de las implementaciones de listview probablemente no será necesario.

Puedes consultar este video de Chet Hasse para obtener más información sobre la reutilización de bitmaps que sería mejor si tuvieran el mismo tamaño. DevBytes: asignación de mapa de bits

El reciclaje de mapas de bits se debe realizar de forma diferente en las diferentes versiones de Android. Lo mejor es implementar de una manera que cubre la mayoría de las versiones.

Como otros han dicho, recycle () hace que su mapa de bits sea inutilizable, recycle () está destinado a ser utilizado una vez que haya terminado con el mapa de bits y desea inducir una colección de basura. Creo que deberías usarlo en tu actividad onPause () / onStop ().

Vea aquí para más información: Administración de la memoria de mapa de bits

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.