2010-02-24 16 views
10

Experimenté la excepción OutOfMemory en mi código, por lo que estoy revisando el código.¿View.removeAllViews() libera memoria?

Tengo una pregunta, ¿View.removeAllViews() libera la memoria que utilizaron las vistas secundarias que se agregaron anteriormente en esta vista principal?

Gracias.

Respuesta

5

Excepto si su código tiene referencias en las vistas secundarias del grupo de vistas, todas las vistas secundarias de ViewGroup deberían ser "basura coleccionable".

6

View.removeAllViews() podría liberar las Vistas, y las programará para la recolección de elementos no utilizados (lo que podría ocurrir más adelante); sin embargo, puede tener un problema porque @drawables en el XML o en su código con 'getDrawable()' aún podría consumir memoria.

He luchado con errores OutOfMemory mucho a mí mismo y se encontró que el mayor problema no era el XML Presentación o los objetos de vista, pero los dibujables y recursos que cargada (o yo cargado para unir a ellos.)

Una gran charla sobre esto se puede encontrar en YouTube de Google IO 2011:

http://www.youtube.com/watch?v=_CruQY55HOk

esta charla introduce mediante el MAT Eclipse (Herramienta de análisis de memoria) para solucionar excepciones OutOfMemory. Lo sugiero porque mencionas que estás revisando el código y el mejor lugar para comenzar a buscar un error de OutOfMemory es ... "¿qué está ocupando mi memoria?"

Cuestiones relacionadas