Android: Когда контекст OpenGL уничтожается?

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

14
задан Edgar Rokjān 24 February 2016 в 11:04
поделиться