2012-07-23 3 views
3

애플리케이션에서 OpenGL과 올바르게 작동하고 Lifecycle Methods를 사용할 때 몇 가지 문제가 있습니다 : onPause()onResume().GLSurfaceView 라이프 사이클 메소드 onPause() 및 onResume()

documentation 상태 :

활동 수명주기 활동이 일시 정지 및 재개 될 때 GLSurfaceView를 통보해야합니다

. GLSurfaceView 클라이언트는 활동이 일시 중지되었을 때 onPause()를 호출해야하며, 활동이 재개 될 때 onResume()을 호출해야합니다. 이러한 호출을 통해 GLSurfaceView는 렌더링 스레드를 일시 중지했다가 다시 시작하고 GLSurfaceView가 OpenGL 디스플레이를 해제하고 다시 만들 수 있습니다.

나는 약간 시스템 (활동/조각)에 의해 호출로 onPause()onResume()은 안드로이드의 나머지 부분, 라이프 사이클 이벤트입니다 혼동 된 우선. 여기에서 설명 (자세한 설명은 onPause()onResume()에 있음)에서 개발자가 수동으로 호출해야하는 것으로 보입니다.이 onPause()onResume()를 호출하고 문제를 발견하지 않았습니다없이 내가 GLSurfaceView을 사용하고

. 그러나, 공을 (그리고 활동 재개에 이상한 행동에 대한 가능성이 용의자 감소)의 이익에 나는 설명서에 설명 된대로 그들을 추가하려고합니다.

이 사용 onResume()는 NullPointerException가 발생되도록 그러나 보인다 :

07-23 13:20:08.570: E/AndroidRuntime(20777): Caused by: java.lang.NullPointerException 
07-23 13:20:08.570: E/AndroidRuntime(20777): at android.opengl.GLSurfaceView.onResume(GLSurfaceView.java:544) 
07-23 13:20:08.570: E/AndroidRuntime(20777): at com.ActivityNameHere.onResume(ActivityNameHere.java:151) 

나는 ViewActivity을 등록 누락 단계가 있습니까?

답변

4

onPause()onResume()는 여전히 내 구현을 깨고있다 - 그러나 그들은 더 이상 충돌로하고있어 공정하게 :

Documentation:

The following GLSurfaceView methods can only be called after setRenderer is called: 

getRenderMode() 
onPause() 
onResume() 
queueEvent(Runnable) 
requestRender() 
setRenderMode(int) 

I이었다 하지 호출 내 Activity.onResume() 앞에 setRenderer()가있는 경우가 있습니다.

+1

setRenderer에 대한 문서에서 : "이 메소드는 GLSurfaceView의 라이프 사이클에서 * 한 번만 * 호출되어야합니다." 옳은 일을하고 있는지 확신합니까? 아니면 뭔가를 놓친 것일 수도 있습니다. – async