안드로이드 개발 질문/답변
(글 수 45,052)
게임 어플을 개발 중에 있습니다.
어플 내에서 리소스 & 사운드 로딩 중에 어플을 Back 키로 강제 종료시키고
다시 재 진입할 경우.. 로드하던 사운드 음이 살짝 들립니다.
어플 종료하는 onDestroy() 함수에서 finish 될때 사운드를 종료 해 주고 있지만
소리 나는 것은 여전합니다.
로딩시 쓰래드를 사용하여 로드합니다.
onDestroy 이후에 쓰래드가 여전히 돌고 있는 느낌 입니다만...
이유를 아시는 고수님들 제발 도와주세요..
어플 내에서 리소스 & 사운드 로딩 중에 어플을 Back 키로 강제 종료시키고
다시 재 진입할 경우.. 로드하던 사운드 음이 살짝 들립니다.
어플 종료하는 onDestroy() 함수에서 finish 될때 사운드를 종료 해 주고 있지만
소리 나는 것은 여전합니다.
로딩시 쓰래드를 사용하여 로드합니다.
onDestroy 이후에 쓰래드가 여전히 돌고 있는 느낌 입니다만...
이유를 아시는 고수님들 제발 도와주세요..
2010.05.07 00:57:18
음... 일반적인 Thread 를 사용하신 거라면 onDestroy 가 호출 되도 Thread 가 종료되지 않는 것이 정상입니다. 작동중인 Thread 의 생명 주기는 해당 Activity 가 아니라 Process 와 동일하기 때문에 그렇습니다.
onDestroy 가 호출 될 시에 명시적으로 Thread 가 종료될 수 있도록 코드를 수정하시거나 (while 문 안에 조건을 추가하는 식으로...), 아니면 안드로이드에 제공해주는 AsyncTask 를 활용하시는 것도 하나의 방법이 될 듯 합니다. AsyncTask 같은 경우에는 강제로 작동중인 Thread 를 cancel 할 수 있는 API 를 제공해 주고 있습니다.
http://developer.android.com/reference/android/os/AsyncTask.html#onCancelled()
Process 와 Thread 그리고 Activity 의 생명 주기에 관해 보다 자세한 내용이 궁금하시면 다음 글을 참고해 보셔도 좋을 거 같습니다.
(구글 개발자 블로그의 포스트를 번역한 내용입니다.)
http://blog.naver.com/huewu/110085391353



