В 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()
мне не подходит.