Sunday, May 1, 2011

About Bitmap.recycle()

It make me confused: Is it needed to call Bitmap.recycle() after used?

According to Android Reference Document of Bitmap.recycle():
Free the native object associated with this bitmap, and clear the reference to the pixel data. This will not free the pixel data synchronously; it simply allows it to be garbage collected if there are no other references. The bitmap is marked as "dead", meaning it will throw an exception if getPixels() or setPixels() is called, and will draw nothing. This operation cannot be reversed, so it should only be called if you are sure there are no further uses for the bitmap. This is an advanced call, and normally need not be called, since the normal GC process will free up this memory when there are no more references to this bitmap.

But, many books I read suggest to free memory by calling Bitmap.recycle() once make sure no longer need it.

Please leave me comments if you have any advise.


1 comment:

sasori peña said...

Es una molestia esto jajaajaj, pero supongo que esto nos hace mas divertida la programación, tienes razón, el método Bitmap.recycle(); no se usa mucho ya que en las nuevas versiones de android ya no se guardan en memoria nativa, estoy haciendo una aplicación que en teoría el número de imágenes es infinito, lo que mejor pude hacer fue descargar las imágenes pero una versión comprimida, no encontré otra forma por que al usar el método recycle(); me da un error, este problema no lo pude ni resolver guardando las imágenes en memoria cache, lo que te sugiero es cargar una versión reducida de las imágenes y si te es necesario mostrar una imagen en tamaño completo la descárges por completo, ademas eso es un seguro para que nuestros potenciales usuarios no gasten mucho en trafico de datos.