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()
私にはオプションではありません。