마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

스레드 종료 시점에 대해 알고싶습니다.

0 추천
<안드로이드 프로그래밍 정복> 이란 책에 있는 예제중에

버튼을 누르면 메인스레드에서 postDelayed 함수로 5초뒤에 Runnable을 보내 notification을 띄우는 함수를 구현하는 예제가 있었습니다.

이 예제에서 버튼을 누르고 홈키를 누르거나 Back키로 액티비티를 종료해도

5초뒤에 노티피케이션이 뜨는 이유를 모르겠습니다.

제 생각으로는 액티비티가 백그라운드 액티비티로 전환되거나, 종료되면

스레드도 wait이 되거나 종료되어 작동이 안될거라고 생각했는데,

작동이 된다는것은 루퍼도 살아있고 스레드도 살아있다는 것인데,, 왜 종료가 안되는지 궁금합니다..ㅠ
P0M70M (160 포인트) 님이 2017년 3월 31일 질문

1개의 답변

0 추천
왜 종료될 거라고 생각하시는 건가요?

그 책에 그렇게 나와있나요?
익명사용자 님이 2017년 3월 31일 답변
프로그램이 종료된다=메인스레드가 종료된다
아닌가요?
백그라운드로 가더라도 Activity가 바로 종료 되는게 아니라 onPause 혹은 onStop 상태로 있다가 VM에서 죽여야만 onDestory가 불리면서 종료 됩니다.
따라서 메인  looper도 계속 살아 있을 수 있습니다.
onPause 가 불릴 때 핸들러 동작을 종료 시키고 onResume 이 불릴 때 다시 동작 시키도록 코드를 바꾸셔야 할 겁니다.
백그라운드가 아니라 back버튼을 누르면 onPause와 onStop 그리고 onDestroy가 진행되는거 아닙니까..??
...