안드로이드 개발 질문/답변
(글 수 45,052)
finish()를 호출하면 OnDestroy()를 발생시키는 것으로 알고 있습니다.
Destroy()가 발생하려면 온포즈와 온스탑이 발생해야할텐데...
A엑티비티에서 B엑티비티를 호출한 뒤 B엑티비티에서 finish()를 호출하였는데
B엑티비티에서 OnPause()가 호출된 후 A엑티비티가 Resume된후 B엑티비티에서 OnStop()가 발생할꺼라 생각했는데..
B엑티비티에서 OnStop()가 발생하지 않았습니다..
대체 무슨 이유로 OnStop가 발생 안하는지 모르겠습니다. 임의로 OnStop()를 호출하지 않고
자연스럽게 OnStop()이 호출되도록 하는 방법이 없을까요?
답변 좀 부탁드리겠습니다.
Destroy()가 발생하려면 온포즈와 온스탑이 발생해야할텐데...
A엑티비티에서 B엑티비티를 호출한 뒤 B엑티비티에서 finish()를 호출하였는데
B엑티비티에서 OnPause()가 호출된 후 A엑티비티가 Resume된후 B엑티비티에서 OnStop()가 발생할꺼라 생각했는데..
B엑티비티에서 OnStop()가 발생하지 않았습니다..
대체 무슨 이유로 OnStop가 발생 안하는지 모르겠습니다. 임의로 OnStop()를 호출하지 않고
자연스럽게 OnStop()이 호출되도록 하는 방법이 없을까요?
답변 좀 부탁드리겠습니다.
2009.10.12 14:00:17
onStop() 은 액티비티가 더 이상 보이지 않을 때 호출됩니다.
일반적으로 액티비티가 불려진 후 버튼 입력을 통해서 finish()를 수행하면,
onPause() -> onStop -> onDestroy() 가 순서대로 호출되지만,
그냥 화면 전환하자 마자 onCreate() 등 에서 finish()를 날리면 onDestroy()만 바로 불리더군요.
어떤 용도로 B 액티비티를 호출하자 마자 finish()를 호출하는지를 알려주시면
해결에 좀 더 도움이 될 수 있을것 같습니다.
2009.10.12 15:38:39
우선 답변에 감사드립니다.
저도 책을 몇번 읽어보았고 엑티비티의 생명주기에 대해서도 안다고 생각했었는데..
이번에 OnStop()가 호출되지 않는 이유를 모르겠내요
B엑티비티를 호출하자마자 피니쉬하는건 아니고요,
A엑티비티에서 B를 호출하면서 쓰레드를 사용해서 작업을 진행합니다.
작업이 끝나거나 도중에 취소버튼을 클릭하면 그때 finish()가 발생하도록 구현하였습니다.
실제로 피니쉬가 호출되었는데 OnPause까지 호출되고 아무리 기다려도 onStop가 호출되지 않내요
휴~정상적이지 않은 동작이라 답답하내요..해결방법도 모르겠고요...
테스트 코드를 작성해보았는데 어떤 상황에서도 finish()하니깐 onStop이 잘 호출되던데....
저도 책을 몇번 읽어보았고 엑티비티의 생명주기에 대해서도 안다고 생각했었는데..
이번에 OnStop()가 호출되지 않는 이유를 모르겠내요
B엑티비티를 호출하자마자 피니쉬하는건 아니고요,
A엑티비티에서 B를 호출하면서 쓰레드를 사용해서 작업을 진행합니다.
작업이 끝나거나 도중에 취소버튼을 클릭하면 그때 finish()가 발생하도록 구현하였습니다.
실제로 피니쉬가 호출되었는데 OnPause까지 호출되고 아무리 기다려도 onStop가 호출되지 않내요
휴~정상적이지 않은 동작이라 답답하내요..해결방법도 모르겠고요...
테스트 코드를 작성해보았는데 어떤 상황에서도 finish()하니깐 onStop이 잘 호출되던데....