안드로이드 개발 질문/답변
(글 수 45,052)
앱이 양산용?이 아니라, 여러기능이 들어가있어 굉장히 무거운데요.
에러로 죽는경우가 아니라,
실행중 갑자기, 종료 되는 경우가 발생하는데요.
제목처럼 플랫폼에 무리가 와서, 앱을 강제종료 시킨 것 일까요?
2011.12.17 22:45:11
Jeenee 님 말씀이 맞는것 같구요, 저의 경험상, 강제 종료되는 경우는, Activity 가 background 로 들어갔을 경우, onPause 로 스택에 대기하게 되는데, 대기하지 못하고, destroy 되는 경우는 경험을 해보았습니다. 그런데 질문의 내용을 보면, Foreground 상태에서 종료되시는 것 같은데, 그건 다른 이유일 가능성이 커보입니다. 그리고, 앱의 문제가 아니라해도 적어도, 하나의 Activity 는 Foreground 상에서 대기할 정도로 앱의 성능부분을 조정할 필요가 있어 보이네요.




제가 안드로이드에 입문한지 얼만안돼서 100% 확신할 수는 없지만... 제가 아는 바로는
안드로이드에서 Activity 관리는 stack을 통해서 관리하고 있다고 알고 있습니다. 사용자가 home버튼을 누를 때와 back버튼을 누를 때 반응이 약간 달라질 수 있으나 거의 대동소이한 것 같습니다. 사용자가 back버튼을 누르게 되면 현재 활성화된 activity는 일단은 정지상태로 들어가고 메모리가 허용된다면 stack에 의해서 관리됩니다.
결론적으로 말해서 모바일 환경에서 안드로이드는 효율적인 메모리 활용을 위해서 메모리가 여유가 없을 때는 앱을 강제로 종료시킬 수도 있습니다. Activity의 onStop, onDestroy(?) 암튼, Activity가 종료될 때 발생하는 이벤트에 Toast.makeText()를 이용해서 메세지를 날려보세요. 만약 activity가 종료되는 경우라면 메세지를 뿌리리라 생각됩니다. 또 Logcat으로도 실제로 activity가 어떻게 되었는지 확인을 해보시구요.
안드로이드 개발자 사이트에서 stack과 activity 관련 내용을 보시면 좀 더 클리어하게 이해하실 수 있지 않을까 싶네요.