Реализация onPause GLSurfaceView выглядит следующим образом:
/**
* Inform the view that the activity is paused. The owner of this view must
* call this method when the activity is paused. Calling this method will
* pause the rendering thread.
* Must not be called before a renderer has been set.
*/
public void onPause() {
mGLThread.onPause();
}
Вы видите (и документация заявляет), что он приостанавливает поток рендеринга. Это вызывает внутренний вызов в GLThread для stopEglLocked, который выглядит следующим образом:
private void stopEglLocked() {
if (mHaveEgl) {
mHaveEgl = false;
mEglHelper.destroySurface();
mEglHelper.finish();
sGLThreadManager.releaseEglSurface(this);
}
}
Таким образом, вы можете видеть, что он разрушает поверхность, которая является дорогим системным ресурсом, и заставляет поток ждать (), который также сохраняет системные ресурсы, процессор, аккумулятор и т. Д.
Итак, вызов GLSurfaceView onPause и onResume определенно необходим.