안드로이드 개발 질문/답변
(글 수 45,052)
메인액티비티에서 B라는 액티비티를 띄우고 버튼달아서 System.exit(0); 호출했는데
B액티비티만 사라지고 메인액티비티는 그대로네요 --;;;
메인액티비티의 onDestroy() 함수를 호출을 못합니다.--;;;
System.exit(0);만 호출하면 메인액티비티도 종료되야 되는거 아닌가요?
2013.01.22 09:14:52
(추천:
1 / 0)
그게 정상입니다. A액티비티를 죽이지 않고 B액티비티를 띄웠으니 스택에는 A-B순으로 있죠.
system.exit(0)은 전체를 종료시켜주지 않고 최상단 액티비티만 종료시켜주더군요.
finish()와 동일한 듯 합니다. 적어도 안드로이드에서는요.
백그라운드에 있는 액티비티는 종료 안시킵니다.
결론적으로 안드로이드에서 강제적으로 모든 액티비티를 종료하려면
현재 돌고있는 모든 액티비티를 리스트에 저장하고 그 액티비티를 전부 죽여주는 방법으로 해결해야합니다.
현재 액티비티들을 보려면 adb shell을 이용해보세요.
네 생각하신데로 작동을 하는게 정상이죠.... 소스를 확인 해봐야 이유를 알 수 있을 듯합니다...
하지만 일부기기에서는 위와 같은 종료 방식을 택할 경우 비정상적인 종료로 인식을 하고 엑티비티를 다시 살리는 경우가 있습니다...
그리고 확인은 안해봤지만 제가아는 선에선 종료가 되어진다고 하여도 디스트로이 함수는 호출 되지 않습니다.
저와같은 방법은 강제로 jvm을 중지시키는 행위로써 함수를 타기전에 자바가 중지 되어버리니까요....
그런이유로 비정상적인 종료라고 인식하는 경우가 있구요....