2010-07-03 47 views
6

我真的在這裏掙扎,它讓我失望。用OpenGL處理​​Activity生命週期的正確方法是什麼

什麼是正確的方式來處理OpenGL和一個活動 - 啓動子活動,或返回到主屏幕。讓它恢復到原來的位置。

我已經半工半工,在需要的時候紋理/ VBOs被重載到onResume()。

但是有時候,當啓動子活動並返回,或者進入主屏幕並返回時,onCreate被再次觸發。這弄亂了整個事情,最後我以黑屏。

我敢肯定我做錯了所有的事情。有人可以解釋一個人應該如何處理這樣的活動嗎?

回答

1

你在哪個平臺上工作?

我問的原因是,在Eclair之前,整個地區都充滿了bug,導致暫停/恢復OpenGL基本上只是偶然的工作。但是,這些似乎已經被Eclair修復,我們的應用程序似乎正在相當可靠地暫停和恢復。

你在做什麼假設要做的是向你的SurfaceHolder註冊一個回調,以便當表面出現並消失時得到通知。在surfaceDestroyed()方法中,您完全關閉了EGL,然後在您的surfaceCreated()方法中重新初始化它。你不應該在你的Activity的onCreate()/ onResume()方法中做這些,因爲曲面可能不會同時出現和消失。

這就是說,我們的應用程序是爲蛋糕設計的,當時事情很原始。我認爲,這些日子裏有可用的實用工具類,可以爲你做所有繁重的工作,所以如果你使用其中的一種工作可能會有所不同;如果你不是,你可能想看看他們。

相關問題