5
RENDERMODE_WHEN_DIRTY에서 GLSurfaceView (sdk 버전 7)를 사용하고 있습니다. 설명서에 onPause/onResume을 호출해야한다는 메시지가 있지만 제대로 작동하지 않으므로 궁금합니다. 필요한가요? 내가하지 않으면 어떻게 될까요?GLSurfaceView : onPause/onResume을 호출해야합니까?
RENDERMODE_WHEN_DIRTY에서 GLSurfaceView (sdk 버전 7)를 사용하고 있습니다. 설명서에 onPause/onResume을 호출해야한다는 메시지가 있지만 제대로 작동하지 않으므로 궁금합니다. 필요한가요? 내가하지 않으면 어떻게 될까요?GLSurfaceView : onPause/onResume을 호출해야합니까?
GLSurfaceView의 onPause의 구현은 다음과 같습니다
/**
* 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();
}
당신이 볼 수있는 (그리고 문서 상태)는 렌더링 스레드를 일시 정지있다.
그래서private void stopEglLocked() {
if (mHaveEgl) {
mHaveEgl = false;
mEglHelper.destroySurface();
mEglHelper.finish();
sGLThreadManager.releaseEglSurface(this);
}
}
당신이 그것을 볼 수는 고가의 시스템 자원 표면을 파괴하고, 또한 시스템 자원을 절약 할 수) (기다리는 스레드의 원인이은 다음과 같습니다 stopEglLocked에 GLThread의 내부 전화를 야기 , cpu, baterry 등등.
따라서 GLSurfaceView의 onPause 및 onResume 호출은 반드시 필요합니다.
응용 프로그램을 종료하고 돌아올 때도 정상적으로 작동합니까? 나는 항상 onPause와 onResume을 구현하여 응용 프로그램을 떠나고 돌아온 후에 GlSurfaceView가 작동하도록 유지해야했습니다. – Nitrex88
예, 모든 조건에서 정상적으로 작동합니다. 홈 화면 복귀, 전환 화면 해제 잠금 해제 복귀, 포커스 손실 후 복귀. 몇 주 동안 잘 돌아가고 있었고 설명서의 onPause 항목을 읽었을 때 궁금해졌습니다. – ADB