Tag Archives: terminate

[Java/Android] 실행중인 내 어플리케이션 즉시 종료하기

모든 엑티비티가 종료되었지만 쓰레드 혹은 백그라운드 프로세스 관련하여 어플리케이션이 실제로 종료되지 않는 상황이라던가 프로그램의 로직 상 바로 어플리케이션을 종료해야 하는 상황이 있습니다.

여러가지 방법이 있지만 제가 생각하는 가장 단순한 어플리케이션 종료 방법입니다. 다음의 한줄로 끝납니다.

[code]android.os.Process.killProcess(android.os.Process.myPid());[/code]
위의 코드를 통해 현재 실행중인 나 자신의 PID값을 가져와서 프로세스를 종료시킵니다.

[code]System.exit(0);[/code]
위와 같은 Java문법을 사용하는 사례도 있습니다만, OS가 비정상적인 종료로 판단하는등의 예상치 못한 문제가 발생할 수 있으니 지양하도록 하는게 좋을것 같습니다.

2011.03.20 추가 (Thanks to KaRyu)

참고할만한 [블로그글]을 추가로 썼습니다. 실제로 위와같이 killProcess를 이용하게 되면 어플리케이션이 곧바로 죽어버리게 되며, 딱봐도 비정상적으로 종료되는것처럼 종료(배경화면으로 전환되는 애니메이션이 없음)가 됩니다.

moveTaskToBack을 추가하여 주면 배경으로 전환되는 애니메이션 이후에 프로세스가 종료됩니다.

[code]moveTaskToBack(true);
android.os.Process.killProcess(android.os.Process.myPid());[/code]