안드로이드 개발 질문/답변
(글 수 45,052)
안드로이드 Activity의 생명주기(Lifecycle)에서
활성, 일시정시, 중지, 파괴 4개의 상태가 있습니다.
onCreate - onStart - onResume - onPause - onStop - onDestroy
그런데 일시중지(paused)와 정지(stop)가 햇갈립니다.
백이나 홈을 해서 Activity를 화면 뒤로 보내면 onStop가 되는데요.
onStop까지 안불리고 onPause에서 머물려면 어떻게 해야 하나요?
(어떤 자료에서는, 투명한 Activity를 전경에 띄우면, 그 아래 Activity가 onPause가 된다고 하는데 -_-;; 전 잘 모름)
그리고 onStop와 onDestroy는 호출을 보장 받지 못한다고 되어있는데,
실제 그런가요 -_-;; 그럼 어떻게 하나요.
책과 자료를 많이 찾아 보는 중인데, 보면 볼수록 이해가 않갑니다.
또 어떤 자료는 성질적으로 세개의 그룹으로 나누는데
이런 용어 및 그룹핑이 표준인지도 알고 싶습니다.
스타팅업(onCreate, onStart, onRestart, onResume)
노멀익스큐션(onPause)
셧다운(onStop, onDestory-호출이보장되짂않음)
라이프 싸이클 도와 주세요 ㅠㅠ
활성, 일시정시, 중지, 파괴 4개의 상태가 있습니다.
onCreate - onStart - onResume - onPause - onStop - onDestroy
그런데 일시중지(paused)와 정지(stop)가 햇갈립니다.
백이나 홈을 해서 Activity를 화면 뒤로 보내면 onStop가 되는데요.
onStop까지 안불리고 onPause에서 머물려면 어떻게 해야 하나요?
(어떤 자료에서는, 투명한 Activity를 전경에 띄우면, 그 아래 Activity가 onPause가 된다고 하는데 -_-;; 전 잘 모름)
그리고 onStop와 onDestroy는 호출을 보장 받지 못한다고 되어있는데,
실제 그런가요 -_-;; 그럼 어떻게 하나요.
책과 자료를 많이 찾아 보는 중인데, 보면 볼수록 이해가 않갑니다.
또 어떤 자료는 성질적으로 세개의 그룹으로 나누는데
이런 용어 및 그룹핑이 표준인지도 알고 싶습니다.
스타팅업(onCreate, onStart, onRestart, onResume)
노멀익스큐션(onPause)
셧다운(onStop, onDestory-호출이보장되짂않음)
라이프 싸이클 도와 주세요 ㅠㅠ
2010.01.20 09:40:53
(추천:
1 / 0)
http://androidhuman.tistory.com/entry/액티비티의-생애주기Lifecycle
참고하세요. :)
여기에 조금 더 자세히 설명된것도 있으니 참조하시구요.
그리고 onPause 상태에서 강제로 머무르게 할 수 있는 방법은 없습니다. 특정 상황에서만 그 상태에 머무르는 것이고,
강제로 머무르게 할 수 있다는 생애주기가 있는 의미가 없겠죠 :)
2010.01.20 16:49:57
알려 주신자료가 약간 도움이 되었습니다.
감사합니다.
onPause다음에 다시 onResume로 복귀되는 케이스를 보고 싶었던 것이었습니다.
Lifecycle의 순서나 상태 전환 등은 비교적 쉬운데,
onRestart, onStart이런 메소드에서 어떤 기능을 일반적으로 구현하는지 설명된 것이 거의 없고,
onCreate와 onRestoreInstanceState에서 bundle로 상태 복구가 가능한데 왜 두개 나있어야 되는지,
onStop, onDestroy가 불리지 않고 종료 될수도 있는 경우는 어떤 것인지,
애매한 것들이 많네요 제 책에는 그냥 onStart는 onStop이후 시작될때 불린다. 이런 식이니 이해가 어렵네요 ㅠㅠ
감사합니다.
onPause다음에 다시 onResume로 복귀되는 케이스를 보고 싶었던 것이었습니다.
Lifecycle의 순서나 상태 전환 등은 비교적 쉬운데,
onRestart, onStart이런 메소드에서 어떤 기능을 일반적으로 구현하는지 설명된 것이 거의 없고,
onCreate와 onRestoreInstanceState에서 bundle로 상태 복구가 가능한데 왜 두개 나있어야 되는지,
onStop, onDestroy가 불리지 않고 종료 될수도 있는 경우는 어떤 것인지,
애매한 것들이 많네요 제 책에는 그냥 onStart는 onStop이후 시작될때 불린다. 이런 식이니 이해가 어렵네요 ㅠㅠ
2010.01.22 11:00:20
onCreate랑 onRestore~ 에서 둘 다 상태를 복구할 수 있게 해놓은 것은 .. 뭐 다 생각이 있어서 그런것 아닐까요? :(
일반적으로는 하나만 있어도 되지만 어떤 경우에는 onCreate()에서는 불가능한 것이 있을 수도 있고...
그리고 onStop(), onDestroy()가 불리지 않고 그냥 죽는건 말 그대로 메모리 부족해서 죽여버릴때입니다.
물론 onStop()까지도 불리지 않고 죽는 경우는 많이 없지만, onDestroy()가 불리지 않고 죽는 경우는 솔직히 허다하죠~
에뮬은 모르겠지만 실제 단말기의 로그들을 보다보면 그냥 프로세스 죽이는 경우가 꽤나 많습니다.
2010.01.22 11:02:49
전경..이라는 애매한표현보다는.
간단하게 정리하자면 onPause(), onStop() 모두 액티비티가 비활성화된 상태입니다.
하지만 onPause()는 해당 액티비티가 화면에 보이는 상태, onStop()은 화면에서 사라진 상태입니다.
하지만 예외의 경우도 있습니다. 포커스를 받지 못한다고 무조건 onPause()상태가 되는 것은 아니고, 다이얼로그 등에 의해 포커스를 잃은 경우는 onPause()상태가 되지 않습니다. 하지만, 다이얼로그 스타일의 액티비티를 띄웠을 경우에는 onPause()상태가 됩니다.
일단, 각각의 on~ 으로 시작하는 메소드들을 override 해서 로그를 찍어보시는게 cycle을 이해하시는데 도움이 될 듯 합니다.