Digamos que he cargado una imagen en un objeto de mapa de bits como
Bitmap myBitmap = BitmapFactory.decodeFile(myFile);
Ahora, ¿qué pasará si cargo otro mapa de bits como
myBitmap = BitmapFactory.decodeFile(myFile2);
¿Qué pasa con el primer myBitmap? ¿Se recolecta la basura o tengo que recolectarla manualmente antes de cargar otro mapa de bits? myBitmap.recycle()
?
Además, ¿existe una mejor manera de cargar imágenes grandes y mostrarlas una tras otra mientras se reciclan en el camino?
Una vez que el mapa de bits se había cargado en la memoria, de hecho se hizo con datos de dos partes. La primera parte incluye información sobre el mapa de bits, la otra parte incluye información sobre los píxeles del mapa de bits (está compuesto por una matriz de bytes). La primera parte existe en la memoria usada de Java, la segunda parte existe en la memoria usada de C ++. Puede usar la memoria del otro directamente. Bitmap.recycle () se utiliza para liberar la memoria de C ++. Si solo hace eso, el GC recopilará la parte de java y la memoria de C siempre se usará.
fuente
Timmmm tenía razón.
según: http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
Además, antes de Android 3.0 (API nivel 11), los datos de respaldo de un mapa de bits se almacenaban en la memoria nativa que no se publica de una manera predecible, lo que podría provocar que una aplicación exceda brevemente sus límites de memoria y se bloquee.
fuente