안드로이드 개발 질문/답변
(글 수 45,052)
간단한 게임 어플을 만들고 있습니다.
onPause에 걸리면 서피스뷰 스레드를 공회전 시켜뒀구요.
surfaceDestroyed에서는 서피스뷰 스레드를 멈추게 해뒀습니다.
onDestroy 시 finish(); 시켰구요.
가만히 폰을 둬서 화면이 꺼지거나
핸드폰 옆부분에 전원 버튼을 눌러서 화면이 꺼지면
onPause - onStop 까지 가고 대기합니다.
다시 화면을 켜면
onRestart - onStart - onResume 타면서
하던 게임 그대로 이어서 가능하구요.
근데..
홈버튼을 누르게 되면
onPause - surfaceDestroyed - onStop - onDestroy
까지 내달립니다.
그냥 홈버튼 누르면 꺼져버리라지 하고 넘어갔는데
인앱빌링을 구현하다보니.
결제 상품을 선택 후 스토어 화면으로 이동시 마찬가지로
onPause - surfaceDestroyed - onStop - onDestroy
까지 달려버립니다.
서피스뷰가 꺼져버리는건.. 결제 끝나고 다시 켜면 되는데
onDestroy까지 달려버리면 결제 정보를
주고 받을 수가 없지 않나요?
혹시나 해서.. 결제 상품 선택 시에는 onStop안에 super.onStop (); 를 타지않게 해뒀더니
android.app.SuperNotCalledException 를 내뱉네요.
어떻게 꺼지지 않고 대기하도록 만들수 있을까요..




답변은 아니고 저도 궁금하네요
안드로이드 운영체제에서 포그라운드가 아니면 메모리 부족 등의 경우 종료시키는 대상이 될텐데..
예전에 특정 설정을 하면 종료가 되지않게 하는법을 본적이 있었어요
하지만 이 설정을 많은 앱이 사용해서 또 문제가 된다 라는 글을 본적이 있는 것 같네요.