2010-07-03 27 views
6

? Realmente estoy luchando aquí, y me está frenando.¿Cuál es la forma correcta de manejar el ciclo de vida de la actividad con OpenGL

¿Cuál es la forma correcta de manejar OpenGL y una Actividad? Que inicia subactividades o regresa a la pantalla de inicio. Y que se reanude exactamente donde estaba.

Lo tengo semielaborado tal como está, las texturas/VBO se vuelven a cargar en onResume() cuando sea necesario.

Pero a veces, al iniciar subactividades y regresar, o al ir a la pantalla de inicio y regresar, se activa de nuevo onCreate. Esto arruina todo, y termino con una pantalla negra.

Estoy seguro de que estoy haciendo todo mal. ¿Alguien puede explicar cómo se debe manejar una actividad como esta?

Respuesta

1

¿Con qué plataforma estás trabajando?

La razón por la que pregunto es que antes de Eclair toda esta área estaba plagada de errores, con el resultado de que suspender/reanudar OpenGL básicamente solo funcionaba por accidente. Sin embargo, parece que Eclair lo ha corregido y nuestra aplicación parece suspenderse y reanudarse con bastante fiabilidad.

Lo que está supuso hacer es registrar una devolución de llamada a su SurfaceHolder para que se le notifique cuando la superficie aparece y desaparece. En el método surfaceDestroyed() apaga completamente EGL, y luego en su método surfaceCreated() lo reinicializa. No debe hacer nada de esto con los métodos onCreate()/onResume() de su actividad, ya que la superficie puede no aparecer y desaparecer al mismo tiempo.

Dicho esto, nuestra aplicación fue diseñada para Cupcake, cuando las cosas eran bastante primitivas. Deduzco que en estos días hay clases de utilidad disponibles que hacen todo el trabajo pesado por ti, por lo que si estás usando una de esas cosas puede funcionar de manera diferente; y si no es así, es posible que desee examinarlos.

Cuestiones relacionadas