안드로이드 개발 질문/답변
(글 수 45,052)
1개의 액티비티 위에 서피스뷰로 이미지를 계속해서 움직이는 프로그램을 만들고 있습니다.
그런데 홈버튼이나 백버튼 등, onPause()가 호출 된 후 실행 중인 앱 목록에서 다시 불러오면 움직일 생각을 안 합니다.
로그를 찍어봤더니 onResume()이 불리지 않는게 이유인 것 같은데 어떻게 해야 불러올 수 있을지 모르겠습니다.
처음에는
surfaceDestroy(SurfaceHolder holder) {
rt = true;
while(rt) {
try {
thread.join();
rt = false;
} catch(InterruptedException e) { e.printStackTrace(); }
}
}
이렇게 했었는데 join() 실행이 끝날 생각을 안 하길래 우선 surfaceDestroy()를 빠져나가고 보자는 생각으로 thread.join(500)을 주었더니
위 함수는 수행이 끝까지 되는데 그 이후에도 onResume()은 호출이 안되네요...
억지로 Resume을 불러올 수 없을까도 생각해봤는데 onPause()에서 부르자니 에러가 나고
메인 액티비티랑 서피스뷰 클래스랑 다른 클래스라 부를수가 없습니다.
메인 액티비티는 컨텐츠뷰로 서피스뷰 객체만 불러오게 되어있는 매우 간단한 구조입니다.
onPause(), onResume()등의 생명주기 콜백들은 모두 super를 호출하는 것만으로 되어 있습니다.




저같은 경우는 SurfaceView를 담고있는 Activity가 있고
처음 onPause가 호출될 때 SurfaceView의 Thread를 멈추도록 하였습니다.
그렇지 않으면 홈키를 눌러 밖으로 나간 시점부터 에러가 발생을 하죠.
잘 생각해 보시면 답이 나오실거에요.