2010-07-03 35 views
6

我真的在这里挣扎,它让我失望。用OpenGL处理​​Activity生命周期的正确方法是什么

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

我已经半工半工,在需要的时候纹理/ VBOs被重载到onResume()。

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

我敢肯定我做错了所有的事情。有人可以解释一个人应该如何处理这样的活动吗?

回答

1

你在哪个平台上工作?

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

你在做什么假设要做的是向你的SurfaceHolder注册一个回调,以便当表面出现并消失时得到通知。在surfaceDestroyed()方法中,您完全关闭了EGL,然后在您的surfaceCreated()方法中重新初始化它。你不应该在你的Activity的onCreate()/ onResume()方法中做这些,因为曲面可能不会同时出现和消失。

这就是说,我们的应用程序是为蛋糕设计的,当时事情很原始。我认为,这些日子里有可用的实用工具类,可以为你做所有繁重的工作,所以如果你使用其中的一种工作可能会有所不同;如果你不是,你可能想看看他们。

相关问题