使用OpenGL处理​​Activity生命周期的正确方法是什么

时间:2010-07-03 15:59:21

标签: android opengl-es

我真的在这里挣扎,而且它阻碍了我。

处理OpenGL的正确方法是什么,以及活动 - 启动子活动或返回主屏幕。让它恢复到原来的位置。

我现在半工作,纹理/ VBO在需要时在onResume()重新加载。

但有时,当启动子活动并返回,或进入主屏幕并返回时,onCreate将再次被触发。这弄乱了整个事情,我最终得到了黑屏。

我确信我做错了。有人可以解释一个人应该如何处理这样的活动吗?

1 个答案:

答案 0 :(得分:1)

您在使用什么平台?

我问的原因是,在Eclair之前,整个区域都充满了漏洞,导致暂停/恢复OpenGL基本上只是意外工作。然而,这些确实似乎已被Eclair修复,我们的应用程序似乎相当可靠地暂停和恢复。

所想做的要做的是向SurfaceHolder注册一个回调,以便在曲面出现和消失时得到通知。在surfaceDestroyed()方法中,您完全关闭EGL,然后在您的surfaceCreated()方法中重新初始化它。您不应该使用Activity的onCreate()/ onResume()方法执行任何操作,因为曲面可能不会同时出现和消失。

那就是说,我们的应用程序是为Cupcake设计的,当时事情非常原始。我认为现在有一些实用工具可以为你做所有繁重的工作,所以如果你使用其中一件可能会有不同的工作;如果你不是,你可能想要研究它们。