В андроиде документа GLSurfaceView
говорится следующее:
A GLSurfaceView должен быть уведомлен о приостановке действия и возобновлено. Клиенты GLSurfaceView должны вызывать onPause(), когда активность приостанавливается и onResume(), когда активность возобновляется. Эти вызовы разрешить GLSurfaceView приостанавливать и возобновлять поток рендеринга, а также позволяют GLSurfaceView выпускать и воссоздавать отображение OpenGL.
Поэтому я должен сделать что-то подобное в своей деятельности:
public void onPause() {
myGlSurfaceView.onPause();
}
public void onResume() {
myGlSurfaceView.onResume();
}
Я наблюдаю в своем коде, что если я не вызываю onPause()
и onResume()
, тогда контекст не будет потерян, когда я нажму кнопку "домой", чтобы я мог переключаться между приложениями, а затем вернуться к своей игре и все работает. Я вижу, что если я закрою игру с помощью кнопки "Назад", тогда экран будет черным, когда я его снова открою, но я могу изменить поведение кнопки "Назад", чтобы полностью закрыть игру и избежать этой проблемы.
Итак, мой вопрос: когда разрушен контекст OpenGL? Если я не называю onPause()
и onResume()
, могу ли я предположить, что он никогда не будет уничтожен?
EDIT:
Я нацелен на Android 2.2, поэтому setPreserveEGLContextOnPause()
для меня не вариант.