在Android上,GLSurfaceView
文档中有这样的说明:
当活动暂停和恢复时必须通知
GLSurfaceView
。GLSurfaceView客户端需要在活动暂停时调用onPause()
,在活动恢复时调用onResume()
。这些调用允许GLSurfaceView暂停和恢复渲染线程,也允许GLSurfaceView释放和重新创建OpenGL显示。
因此,在我的活动中,我应该像这样做:
public void onPause() {
myGlSurfaceView.onPause();
}
public void onResume() {
myGlSurfaceView.onResume();
}
我在代码中观察到,如果我不调用onPause()
和onResume()
方法,则当我按下主页按钮时,上下文并不会丢失,因此我可以在应用程序之间切换,然后返回到我的游戏,一切正常。 我发现,如果我使用返回按钮关闭游戏,那么再次打开游戏时屏幕是黑色的,但是我可以更改返回按钮的行为以完全关闭游戏并避免此问题。
因此,我的问题是:什么时候销毁OpenGL上下文? 如果我不调用 onPause()
和 onResume()
方法,我可以假定它永远不会被销毁吗?
编辑:
我的目标是 Android 2.2,因此对我而言,setPreserveEGLContextOnPause()
不是一个选择。