2010-07-03 5 views
6

Je me bats vraiment ici, et cela me retient.Quelle est la bonne façon de gérer le cycle de vie de l'activité avec OpenGL

Quelle est la manière correcte de gérer OpenGL, et une activité - qui lance des sous-activités, ou revient à l'écran d'accueil. Et le reprendre juste là où il était.

Je l'ai semi-travail en l'état, les textures/VBO sont rechargées à onResume() lorsque cela est nécessaire. Mais parfois, au lancement de sous-activités et au retour ou à l'affichage de l'écran d'accueil et au retour, onCreate est à nouveau déclenché. Cela bouleverse tout, et je me retrouve avec un écran noir. Je suis sûr que je fais tout le mal. Quelqu'un peut-il expliquer comment on devrait gérer une activité comme celle-ci?

Répondre

1

Avec quelle plate-forme travaillez-vous?

La raison pour laquelle je demande est qu'avant Eclair toute cette zone était criblée de bugs avec le résultat que la suspension/reprise d'OpenGL ne fonctionnait essentiellement que par accident. Cependant, ceux-ci semblent avoir été corrigés par Eclair et notre application semble suspendre et reprendre de façon assez fiable.

Ce que vous êtes supposé faire est d'enregistrer un rappel à votre SurfaceHolder afin que vous soyez averti lorsque la surface apparaît et disparaît. Dans la méthode surfaceDestroyed() vous fermez complètement EGL, puis dans votre méthode surfaceCreated() vous le réinitialisez. Vous ne devriez pas faire cela à partir des méthodes onCreate()/onResume() de votre Activity, car la surface peut ne pas apparaître et disparaître en même temps. Cela dit, notre application a été conçue pour Cupcake, quand les choses étaient plutôt primitives. Je comprends que ces jours-ci, il existe des classes d'utilité qui font tout le travail pour vous, donc si vous utilisez une de ces choses peut fonctionner différemment; et si vous ne l'êtes pas, vous voudrez peut-être y jeter un coup d'œil.

Questions connexes