내 앱에는 GLSurfaceView가 포함 된 두 번째 활동이 있습니다. 첫 번째 활동에서 수집 된 데이터의 OpenGL ES 1.0 차트를 보여줍니다. 오리엔테이션 변경을 포함하여 모든 것이 잘 작동합니다. 앱은 두 가지 활동으로 튀어 나올 수 있으며 방향 변경을 처리하고 아무 일도 일어나지 않습니다.Android/OpenGL 해결 IllegalStateException
그러나 두 번째 활동에서 OpenGL 차트를 표시하고 Android HOME 화면을 누른 다음 MENU의 앱 목록에서 선택하여 앱으로 돌아 가면 "불행히도, XXX이 (가) 중지되었습니다. "
Logcat에서 나는 이걸 보았습니다 : IllegalStateException: setRenderer has already been called for this instance
그리고 나는 Activity의 onStart()
방법에있는 코드의 mGLView.setRenderer (new GLRenderer (this));
라인까지 추적했습니다.
02-18 09:48:08.743 1953-1953/com.hippo.happ I/HActivity? Just before the setRenderer call...
02-18 09:48:08.753 1953-1953/com.hippo.happ D/AndroidRuntime? Shutting down VM
02-18 09:48:08.753 1953-1953/com.hippo.happ W/dalvikvm? threadid=1: thread exiting with uncaught exception (group=0xb0d75b08)
02-18 09:48:08.763 1953-1953/com.hippo.happ E/AndroidRuntime? FATAL EXCEPTION: main
Process: com.hippo.happ, PID: 1953
java.lang.RuntimeException: Unable to resume activity {com.hippo.happ/com.hippo.happ.HChartActivity}: java.lang.IllegalStateException: setRenderer has already been called for this instance.
... 로그 캣에서 다음을 참조하지만이 표시되지 않습니다 ... 바로 앞이 호출 후 로그 라인을 넣어 처음으로 생성되는 : 나는 하지 전혀 setEGLContextClientVersion
를 호출 오전,도 내가 setRenderMode
로 렌더링 모드를 변경하고 있음을 확인 할 수
02-18 09:47:51.123 1953-1953/com.hippo.happ I/HActivity? Just after the setRenderer call...
. I 은이 onPause()
및 onResume()
으로 구현되었습니다.
일부 코드를 사용하여 "setRenderer가이 인스턴스에 대해 이미 호출되었습니다"(문서에서 적절한 get 또는 check 메소드를 볼 수 없음) 또는 try..catch에서 단지 setRender
행을 감싸고 있는지 확인할 수 있습니까? 블록 및 smother IllegalStateException
? 그게 이 방법을 권장합니까?
** 'IllegalStateException' ** ** 버려 질 수 있습니다. OpenGL 차트가 완료되면 예상대로 반환됩니다.이 작업을 수행하는 올바른 방법 인 것처럼 느끼지는 않지만, 적어도 앱은' t 충돌. 다른 조언을 환영 할 것입니다 ... – Hippogriff