2010-07-03 9 views
6

Ich kämpfe wirklich hier, und es hält mich zurück.Was ist der richtige Weg, um den Activity Lifecycle mit OpenGL zu behandeln?

Was ist die richtige Art, OpenGL zu behandeln, und eine Aktivität - die Teilaktivitäten startet oder zum Startbildschirm zurückkehrt. Und habe es genau dort wieder aufgenommen, wo es war.

Ich habe es semi-arbeiten, wie es steht, Texturen/VBOs werden bei onResume() bei Bedarf neu geladen.

Manchmal wird onCreate jedoch beim Starten von Unteraktivitäten und beim Zurückkehren oder beim Zurückkehren zum Startbildschirm erneut ausgelöst. Das vermasselt das Ganze, und ich lande mit einem schwarzen Bildschirm.

Ich bin mir sicher, dass ich die ganze Sache falsch mache. Kann jemand erklären, wie man mit solch einer Aktivität umgehen soll?

Antwort

1

Mit welcher Plattform arbeiten Sie?

Der Grund, warum ich frage ist, dass vor Eclair dieser ganze Bereich mit Bugs gespickt war mit dem Ergebnis, dass das Aussetzen/Wiederaufnehmen von OpenGL grundsätzlich nur durch Zufall funktionierte. Diese scheinen jedoch von Eclair behoben worden zu sein und unsere App scheint ziemlich zuverlässig auszusetzen und wieder aufzunehmen.

Was Sie sind angenommen zu tun ist, einen Rückruf zu Ihrem SurfaceHolder registrieren, so dass Sie benachrichtigt werden, wenn die Oberfläche erscheint und verschwindet. In der oddestroyed() -Methode beenden Sie EGL vollständig und dann initialisieren Sie es in Ihrer Methode "obsoleteCreated()" neu. Sie sollten nichts von den onCreate()/onResume() -Methoden Ihrer Activity machen, da die Oberfläche möglicherweise nicht gleichzeitig erscheint und verschwindet.

Das heißt, unsere Anwendung wurde für Cupcake entwickelt, als die Dinge ziemlich primitiv waren. Ich nehme an, dass es in diesen Tagen Utility-Klassen gibt, die das ganze schwere Heben für Sie erledigen, also wenn Sie eines dieser Dinge verwenden, kann es anders funktionieren; und wenn Sie nicht sind, möchten Sie vielleicht in sie schauen.

Verwandte Themen