2011-12-03 12 views
5

Ho creato uno sfondo animato che visualizza un'animazione memorizzando circa 70 immagini in un array e quindi visualizzandole una alla volta per creare l'animazione. Ho usato la struttura del CubeEngine per progettarlo. Per la maggior parte funziona.Sfondo animato - "Imposta sfondo" - È necessario un evento da utilizzare per cancellare la memoria

Quando seleziono per la prima volta lo sfondo, carica la matrice e visualizza l'animazione. Quindi quando faccio clic sul pulsante "Imposta sfondo" ottengo un "OutOfMemoryError: la dimensione della bitmap supera il budget della VM". Ho aggiunto le chiamate a bitmap.recycle() per provare a risolvere questo problema.

Ho inserito Log.d in tutti gli eventi per cercare di capire il flusso degli eventi. Ciò che appare è quando viene toccato il pulsante "Imposta sfondo", il flusso va dritto al Costruttore.

L'evento onDestroy o gli eventi onSurfaceChanged non vengono attivati, né alcun altro evento, ad eccezione di onTouchEvent.

Quindi la mia matrice originale di immagini è in memoria e quando esegue il Costruttore tenta di caricare un altro array con immagini e esaurisce la memoria.

Non riesco a trovare un evento per inserire la logica per cancellare la matrice originale quando fanno clic sul pulsante "Imposta sfondo".

C'è un modo per aggiungere la logica al pulsante "Imposta sfondo" o c'è un altro evento che posso aggiungere al mio codice dove dovrei essere in grado di farlo?

Ho visto che altri hanno questo problema ma non hanno visto una soluzione.

Qualsiasi suggerimento sarà apprezzato.

risposta

0

Se si desidera eseguire operazioni di caricamento o scaricamento, è possibile rilevare quando la visibilità di WallpaperService.Engine cambia sostituendo onVisibilityChanged (visibile in booleana).
È inoltre necessario riprendere o sospendere GlSurfaceView quando la visibilità cambia.

È possibile trovare maggiori informazioni qui:
http://developer.android.com/reference/android/service/wallpaper/WallpaperService.Engine.html#onVisibilityChanged(boolean)
http://developer.android.com/reference/android/opengl/GLSurfaceView.html
visualizzare l'attività del ciclo di vita

Problemi correlati