在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()
不是我的选择。