2012-01-11 8 views
5

Tengo una vista que muestra un pequeño mapa de bits, y esto se usa en muchos lugares de mi aplicación (especialmente en las vistas de lista). Actualmente estoy cargando este mapa de bits cada vez que se crea una instancia de esa vista usando BitmapFactory.decodeResource(resource, id). Me di cuenta de que puedo mejorar el rendimiento cargando ese mapa de bits una vez en una variable estática (para que todas las instancias de la vista lo vuelvan a usar) y eso realmente ahorró alrededor de 2-4 ms por instancia de vista. Mi pregunta, ¿el uso de una variable estática de esta manera causa algún tipo de pérdida de memoria en Android? Estoy preocupado porque no he encontrado ningún otro ejemplo que use una variable estática para almacenar un mapa de bits como este.Almacenar un recurso de mapa de bits en una variable estática

Seguimiento pregunta:How to keep a Bitmap in memory

+2

citando chico Romain "Cuando un Disponibles se une a una vista, la vista se establece como una devolución de llamada en el dibujo. En el fragmento de código anterior, esto significa que el dibujo tiene una referencia al TextView que tiene una referencia a la actividad (el Contexto) que a su vez tiene referencias a casi cualquier cosa (dependiendo de su código.) "... así que mantenerlo estático va a causar una pérdida de memoria. – Nitin

+1

Gracias a @ 0col, he visto esa publicación, pero no estoy seguro de que un 'android.graphics.Bitmap' (no' android.graphics.drawable.BitmapDrawable') también sea 'Drawable'. ¿Es ese el caso? –

+0

Hola, @AbdullahJibaly ¿Necesitamos importar o ampliar algo antes de usar Bitmap? Como estoy haciendo 'Dispositivo de mapa de bits;' y mi IDE está dando un error que _Bitmap no se puede resolver a un tipo_. Gracias por adelantado. – Learner

Respuesta

1

evitar que objetos de mapa de bits como estática puede causar potenciales pérdidas de memoria, ver los documentos oficiales en http://android-developers.blogspot.co.uk/2009/01/avoiding-memory-leaks.html

+3

Gracias @calvin, no me di cuenta de que un 'Mapa de bits' es un' Drawable' ya que no parece haber ninguna relación en la jerarquía de clases. Para ser claros, estoy usando 'android.graphics.Bitmap' no' android.graphics.drawable.BitmapDrawable'. Si se aplica la misma advertencia, ¿cuál es la solución más directa para este problema? –

+0

Pregunta de seguimiento: http://stackoverflow.com/questions/8824004/how-to-keep-a-bitmap-in-memory –

+0

Un mapa de bits * no * es dibujable, por lo que esta respuesta es incorrecta, o al menos no es compatible con el contenido del enlace. –

Cuestiones relacionadas