안녕하세요? 저는 이번에 처음 안드로이드 게임 포팅을 하고 있는 중입니다.

다른 개발일은 몇년간 해 왔었는데 이번 게임 포팅은 많이 어려움에 봉착하게 되네요.

제가 질문하고 싶은 것은 게임이 OpenGL ES를 쓰는지라 SurfaceView를 상속받은 GLSurfaceView를 쓰고 있습니다.

게임은 주로 C++로 되어 있어 NDK를 써서 라이브러리로 만들었구요. 자바쪽에서 GLSurfaceView를 View로 써서 JNI를 통해 라이브러리

를 호출하면 라이브러리에서 화면에 그릴 버퍼에 그림을 그리고 자바쪽에서는 그 버퍼를 Swap 시켜서 화면에 뿌려주는 방식을 취하고 있

습니다. 

Sleep모드로 들어가고 나왔을 때는 작동을 잘하는 것 같습니다. 그런데 전화가 오거나 Home 버튼을 눌러 다른 작업을 하고 다시 게임을

불렀을 때는 화면이 안나오거나 죽어버립니다.  그런데 여기서 게임 중에 전화벨이 올 때 5초 정도? 안에 전화 거절을 하게 되면 정상적으

로 게임이 돌아옵니다. 그런데 5초? 이상이거나 좀 더 오래 전화벨이 울리고 거절했을 때는 게임이 죽어버리네요.

제 생각이 맞는 것인지는 모르지만 전화가 올 경우는 SurfaceView가 Destroy 되고 게임 쪽으로 돌아올 때는 SurfaceView가 Create 되는데

요. SurfaceView가 Destroy될 때 시간이 좀 지나면서 화면에 뿌릴 텍스쳐이미지들이 삭제가 되는 듯 합니다.  현재 화면의 이미지들을

알 경우 저장하고 있다가 다시 뿌려 주면 좋겠지만 현재 NDK로 만들어 놓은 라이브러리를 분석하기가 힘드네요.

어떤 게임 중에 Pause 화면을 앞에 그려 주었다가 게임 화면으로 다시 돌아왔을 때 Pause화면을 어떤 키를 누름으로서 Pause화면을

푸는 식의 작동을 하는 것을 봤습니다. 이 게임은 자바로 만든 게임으로 Rokon이라는 OpenGL ES 엔진을 쓰는 Flying Aces라는 게임인데

이 게임에서는 전화가 올 때 Pause 화면을 뿌려 주었다가 전화가 끊기면 Pause화면으로 넘어 와 Menu키를 누름으로서 다시 게임이

작동되는 것으로 봐서는 어떻게 하면 될 것도 같은데.... 며칠 째 골머리 썩고 있네요.

부디 도움이 될만한 조언 좀 부탁드리겠습니다.

감사합니다.