최근에 안드로이드 프로젝트를 개발하다가 화면밖으로 나갔다가 들어오면
검은 화면만 나오는 현상이 있었다.
GLSurfaceView를 사용하고 있었고..
대충 찾아 보니까 onPause, onResume 할 때
EGLContext 가 지워지고 새로 만든다는 사실을 알았는데..
이걸 다시 살리려면 지워진 리소스들을 일일이 다 살려줘야 한다는데..
그렇게 하기도 힘들고 안드로이드 3.0 (API 11) 이상부터 생긴
setPreserveEGLContextOnPause()
함수를 사용하면 되는데.. 현재 프로젝트 SDK 는 2.3.3 이므로 쓸 수도 없었다.
미친 안드로이드 @#(%@#%(@#%)@#(@#$
어쨌든..
해결방법을 찾다가 찾은게 Activity에 LaunchMode를 주는 건데..
이 옵션에는 4가지가 있다.
“standard”
“singleTop”
“singleTask”
“singleInstance”
매니패스트에 직접 넣어 줘도 되고.
간단히 설명하면
옵션 4개중에 밑에 2개는 일반적인 경우에는 추천되지 않아서 사용하지 않고
위에 2가지 중에서
첫번째(standard)가 기본적으로 설정되어 있는 값으로..
새로운 task 를 생성하지 않고 쌓이게 되는데.. Activity를 활성화 할 때는 무조건 새로 만드는 것 같다.
그리고 두번째(singleTop)가 이번에 바꾼 옵션값인데..
task 는 새로 생성하지만 Activity를 활성화 할 때 이미 있으면 그걸 재활용 한다.
그래서 다른 화면에 나갔다가 오면 EGLContext 가 깨지지 않고
이미 생성되어 있던걸 재활용 하는 듯 하다.
'Programming > Android' 카테고리의 다른 글
[Android] Mac에서 안드로이드 푸시(GCM) 구현하기 # 코드 구현 (0) | 2015.03.27 |
---|---|
[Android] 안드로이드에서 슬립모드 막는방법 (0) | 2015.03.27 |
[Android] 안드로이드 키(key) 처리 하는 방법 (0) | 2015.03.27 |
[Android] 화면 상하회전 세팅하는 방법 (0) | 2015.03.27 |
[Android] Build path contains duplicate entry 에러 (0) | 2015.03.27 |