2011-12-03 19 views
5

He creado un Live Wallpaper que muestra una animación almacenando 70 o más imágenes en una matriz y luego las muestra una a la vez para crear la animación. Usé la estructura del CubeEngine para diseñarlo. En su mayor parte funciona.Fondo de pantalla en vivo - "Establecer fondo de pantalla" - Necesito evento para borrar la memoria

Cuando selecciono por primera vez el fondo de pantalla, carga la matriz y muestra la animación. Luego, cuando hago clic en el botón "Establecer fondo de pantalla", aparece un "OutOfMemoryError: el tamaño del mapa de bits excede el presupuesto de VM". He agregado las llamadas a bitmap.recycle() para tratar de resolver esto.

He puesto Log.d en todos los eventos para intentar comprender el flujo de eventos. Lo que parece es que cuando se toca el botón "Establecer fondo de pantalla", el flujo va directamente al Constructor.

El evento onDestroy o los eventos onSurfaceChanged no se activan, ni ningún otro evento, excepto onTouchEvent.

Así que mi matriz original de imágenes está en la memoria y cuando ejecuta el Constructor intenta cargar otra matriz con imágenes y se queda sin memoria.

No encuentro un evento en el que poner la lógica para borrar la matriz original cuando hacen clic en el botón "Establecer fondo de pantalla".

¿Hay alguna manera de agregar lógica al botón "Establecer fondo de pantalla" o hay algún otro evento que pueda agregar a mi código donde debería poder hacer esto?

He visto a otros tener este problema pero no han visto una solución.

Cualquier sugerencia será apreciada.

Respuesta

0

Si desea realizar cualquier carga o descarga, puede detectar cuándo la visibilidad de WallpaperService.Engine cambia anulando en VisibilidadCambiada (booleana visible).
También debe reanudar o pausar su GlSurfaceView cuando cambie la visibilidad.

Puede encontrar más información aquí:
http://developer.android.com/reference/android/service/wallpaper/WallpaperService.Engine.html#onVisibilityChanged(boolean)
http://developer.android.com/reference/android/opengl/GLSurfaceView.html
ver la actividad del ciclo de vida

Cuestiones relacionadas