2010-07-03 15 views
6

Sto davvero lottando qui e mi sta trattenendo.Qual è il modo corretto di gestire il ciclo di vita delle attività con OpenGL

Qual è il modo corretto di gestire OpenGL e un'attività, che avvia attività secondarie o torna alla schermata iniziale. E farlo riprendere esattamente dove era.

Ce l'ho semi-funzionante così com'è, le trame/VBO vengono ricaricate su onResume() quando necessario.

Ma a volte, quando si lanciano attività secondarie e si ritorna, o si torna alla schermata principale e si ritorna, onCreate viene nuovamente attivato. Questo rovina tutto e finisco con uno schermo nero.

Sono sicuro che sto facendo il tutto sbagliato. Qualcuno può spiegare come si dovrebbe gestire un'attività come questa?

risposta

1

Con quale piattaforma stai lavorando?

La ragione per cui chiedo è che prima di Eclair l'intera area era piena di bug con il risultato che la sospensione/ripresa di OpenGL fondamentalmente funzionava solo accidentalmente. Tuttavia, questi sembrano essere stati risolti da Eclair e la nostra app sembra sospendere e riprendere abbastanza in modo affidabile.

Quello che stai supposto da fare è registrare un callback sul tuo SurfaceHolder in modo da ricevere una notifica quando la superficie appare e scompare. Nel metodo surfaceDestroyed() spegni completamente EGL, quindi nel metodo surfaceCreated() lo reinizializzi. Non dovresti fare nulla di tutto questo dai metodi onCreate()/onResume() della tua attività, poiché la superficie potrebbe non apparire e scomparire allo stesso tempo.

Detto questo, la nostra applicazione è stata progettata per Cupcake, quando le cose erano piuttosto primitive. Raccolgo che in questi giorni ci sono classi di utilità disponibili che fanno tutto il lavoro pesante per te, quindi se stai usando una di quelle cose potrebbe funzionare in modo diverso; e se non lo sei, potresti volerli esaminare.

Problemi correlati