Tengo una aplicación para Android con muchas animaciones.Imágenes agregadas a AnimationDrawable memoria de pérdida programada
Cuando mediante programación crear animaciones (utilizando AnimationDrawable
) el objeto no Java (como aparece en la pestaña DDMS Montón) crece con cada nueva animación me carga y nunca se contrae de nuevo, incluso después de mis animaciones son liberados.
que tienen una sola referencia a cada objeto AnimationDrawable
de un objeto contenedor que escribí y que verifica este objeto se libera reemplazando el método finalize
y asegurarse de que se llama.
Eventualmente, Android detiene la carga de imágenes e imprime errores "sin memoria" en el registro.
Lo interesante es que esto ocurre solo en algunos dispositivos (Motorola Xoom, Sony Experia) y no en otros (como el Galaxy S).
Este problema no es específico de Honeycomb o pre-Honeycomb como se puede ver en los ejemplos del dispositivo que di.
Algunas de las cosas que intenté:
- Llamada de reciclaje en cada una de las tramas después que haya terminado con la animación actual, pero no parece ayudar.
- Asignación nula al objeto AnimationDrawble
- Asegurarse de que no hay ninguna variable estática relacionada con la clase que contiene la referencia a la animación dibujable
- Asegúrese de que el problema desaparece una vez que comento hacia fuera
myAnimation.addFrame(...)
¿Podría publicar la RAM total de cada dispositivo? Además, ¿de qué tipo de animación estás hablando? ¿Podría publicar un ejemplo del código de inicialización? –
La XOOM tiene 1GB de RAM y estoy usando la bandera de "gran montón" en el manifiesto, la Galaxy S tiene 512MB – Gu1234
Esa cosa 'myAnimation.addFrame' me hizo sospechar que puede que no esté usando esto como está previsto. Por favor, publique un pequeño fragmento. –