안드로이드 개발 질문/답변
(글 수 45,052)
제가 만든 Activitity 에서 3시간 짜리 동영상을 intent로 실행합니다.
당연히 제 Activity는 onPause 상태로 진입을 합니다.
그리고 3시간이 경과하면 SendMessageDelayed 를 사용하여 다시 동영상을
재싱시킬 예정입니다.
그런데, 3시간후에 동영상은 재생되지 않았습니다.
로그를 보면 onPause 에 있던 Activity가 죽은 것 같습니다.
OS가 죽인것 같은데 왜 그런걸까요 ..;
시간 관계없이 항상 살아있게 할 수 있는 방법이 없나요?
로그는 아래처럼 찍힙니다.
1 onCreate
2 onResume
3 onPause --- 동영상 실행시킨 시점, 3시간 대기
4 onCreate
5 onResume
3이후에 onCreate로 Activity가 새로 생성되었네요.
제가 예상한것은 onPause후 onResume 인데, onCreate는 왜 들어갔을까요..
2012.08.10 11:27:40
http://developer.android.com/intl/ko/reference/android/app/Activity.html
그림으로 아주 친절하게 나와있습니다.
오랫동안 보이지 않으면 onPause에서 onStop으로 넘어갑니다.
그리고 메모리가 부족하면 onResume이 아니라 onCreate로 되돌아갑니다.
3시간이 아니더라도 동영상때문에 메모리가 급격히 줄면 디바이스에 따라
단 5분안에 onStop이 될수도 있죠..




액티비티가 화면 상단에 있지 않거나 현재 실행 중인 서비스랑 바인딩 되어 있지 않다면
액티비티는 언제든 죽을 수 있습니다.
시스템에서 필요할 시 현재 활성화되어 있지 않은 애들은 언제든 죽일 수 있는데요
이걸 처리하기 위해서는 액티비티 생명주기를 유의깊게 살펴보신 후 설계를 하셔야 합니다.