Android – fugas de memoria, ¿qué estoy haciendo mal?

Tengo la actividad A, que lanza la actividad B a través de una intención. La Actividad A no tiene referencias a la Actividad B, tampoco hay referencias a la Actividad B en el singleton de Solicitud que estoy usando.

Cuando creo la Actividad B, se crean varios miles de objetos. Eso está bien, es una actividad con un ListView muy poblado con muchas imágenes.

Pero, cuando presiono el botón de retroceso y vuelvo a la actividad A, sólo una docena de los miles de objetos son liberados. OnDestroy () también se llama para la actividad. Estoy usando DDMS para ver la información del montón, y estoy presionando 'causa GC' varias veces para forzarlo a liberar memoria.

He hecho la misma prueba en otras aplicaciones (que usan las vistas de lista también) y el 100% de sus objetos se destruyen al presionar el botón Atrás y luego 'Causa GC', por lo que ciertamente no es un error.

Cualquier consejo por favor? 🙂 He leído el material en los documentos de Android sobre los contextos de fugas, pero eso no es útil ya que no estoy haciendo referencia a la actividad (o cualquier cosa en ella) que se destruye en otro lugar. Además, tengo muchas otras actividades que funcionan de la misma manera, y no liberar toda la memoria en destruir. Debo estar extrañando algo obvio?

Edit: Acabo de dar cuenta de que estoy utilizando AsyncTasks que tienen referencias a la actividad (ya sea pasado como arg en doInBackground () o accesible a través de outerClass.this. ¿Podían estar colgando en el grupo de hilos, incluso después onPostExecute ()?

Edit: Se filtra incluso si vuelvo antes de ejecutar cualquier asynctasks 🙁

Edit: No hay fugas antes de ejecutar asynctasks si quito el código admob, pero todavía se filtra en las actividades que utilizan asynctasks .. asynctask sigue siendo un buen candidato 🙂

Creo que hay un error en la implementación de ListView . Echa un vistazo a esta pregunta: Android: AlertDialog provoca una pérdida de memoria .

Aquí hay un informe de error: http://code.google.com/p/android/issues/detail?id=12334 . Se ha rechazado pero en mi opinión debe ser reabierto.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.