2010-11-14 11 views
7

amigos,puntos de pérdida de memoria android no son claros!

He leído el artículo completo relacionado con la prevención de fugas de memoria en Android. http://developer.android.com/resources/articles/avoiding-memory-leaks.html

ahora

1) estoy usando clase anidada privada no estática

si hago esa clase anidada estática será útil?

2) el artículo dice Si está a punto de utilizar Clases Internas o Clases Anónimas, piense detenidamente. No use Clases anónimas hasta que esté muy seguro y pueda demostrar que no están causando una fuga de memoria.

¿alguien me puede dar un ejemplo de eso? cuál es un buen enfoque y cuál es malo para la pérdida de memoria.

cualquier ayuda sería apreciada.

+0

En segundo lugar, leo el artículo muchas veces y todavía no estoy seguro de qué debería hacer exactamente para evitar fugas en mi aplicación. ¿Tengo que mantener una referencia a cada dibujante en mi aplicación y establecer su devolución de llamada a nulo? ¿Qué debo hacer? El artículo realmente debería proporcionar algunos ejemplos más dada la importancia del tema. – marchinram

+0

sí, estoy confundido también, los ejemplos no son lo suficientemente claros y necesitan más explicación. – UMAR

Respuesta

1

1) Evitaría usar clases estáticas en general. Especialmente si necesita pasar el puntero de Contexto, ya que esto causará una fuga. A menos que las clases estáticas tengan constantes, son análogas a las variables globales y eluden la arquitectura de Android, que está destinada a desvincular las actividades.

Especialmente no desea declarar las instancias Drawable o los objetos de Android framework como estáticos. Esto arruina su vida.

2) No he visto ningún problema con las clases anónimas en particular. En algunos casos, puede filtrar una variable de contexto, pero esto es difícil de hacer en un solo hilo. Al pasar un contexto, puede limitar las fugas utilizando getApplicationContext(), que devuelve el contexto global que no tendrá fugas.

Espero que esto ayude!

+0

Vea también este hilo: http://code.google.com/p/android/issues/detail?id=8488 – swinefeaster

+0

No sé si tiene algún problema con esto, pero he encontrado una gota en la solución que soluciona todos los problemas de pérdida de memoria de Android con clases estándar de Android: http://code.google.com/p/android/issues/detail?id=8488#c51 – swinefeaster