모든 엑티비티가 종료되었지만 쓰레드 혹은 백그라운드 프로세스 관련하여 어플리케이션이 실제로 종료되지 않는 상황이라던가 프로그램의 로직 상 바로 어플리케이션을 종료해야 하는 상황이 있습니다.
여러가지 방법이 있지만 제가 생각하는 가장 단순한 어플리케이션 종료 방법입니다. 다음의 한줄로 끝납니다.
[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]
 
						 쉘의 기본적인 화면입니다. 심플 그 자체입니다.
쉘의 기본적인 화면입니다. 심플 그 자체입니다. 파일 복사 명령어인 cp명령어의 테스트 화면입니다.
파일 복사 명령어인 cp명령어의 테스트 화면입니다. 파일 삭제명령어인 rm의 실행 모습입니다.
파일 삭제명령어인 rm의 실행 모습입니다. 파일 이동 명령어인 mv입니다. 위에서는 파일 이름을 변경하는데 사용해보고 있습니다.
파일 이동 명령어인 mv입니다. 위에서는 파일 이름을 변경하는데 사용해보고 있습니다. 디렉토리를 옮겨다니는 cd 명령어의 수행 모습입니다. 권한이 있다면 디렉토리를 이동해 다닐 수 있습니다.
디렉토리를 옮겨다니는 cd 명령어의 수행 모습입니다. 권한이 있다면 디렉토리를 이동해 다닐 수 있습니다. 디렉토리 생성 명령어인 mkdir입니다. 디렉토리를 생성하고 들어가보는 것까지 해보았습니다.
디렉토리 생성 명령어인 mkdir입니다. 디렉토리를 생성하고 들어가보는 것까지 해보았습니다. 디렉토리 삭제 명령어인 rmdir의 실행 모습니다.
디렉토리 삭제 명령어인 rmdir의 실행 모습니다. 리눅스에 기본적으로 있는 cat명령어이죠. 욕심을 가지고 만들다가 파일 리더 그이상의 기능을 구현하지 못하였습니다;; 원래는 표준입력을 받아서 파일을 생성할수 있어야 하는데 말이죠..ㅠㅠ
리눅스에 기본적으로 있는 cat명령어이죠. 욕심을 가지고 만들다가 파일 리더 그이상의 기능을 구현하지 못하였습니다;; 원래는 표준입력을 받아서 파일을 생성할수 있어야 하는데 말이죠..ㅠㅠ 쉘의 종료 명령어입니다.
쉘의 종료 명령어입니다. 환경 명령어를 설정하는 모습니다. PS2에 일반적으로 쓰이는 형태의 프롬프트 모양을 입력해 두시면 그 쉘 모양대로 프롬프트가 뜨게 됩니다.
환경 명령어를 설정하는 모습니다. PS2에 일반적으로 쓰이는 형태의 프롬프트 모양을 입력해 두시면 그 쉘 모양대로 프롬프트가 뜨게 됩니다. 파이프(|)를 사용하는 모습입니다. 이거 생각보다 구현하기가 까다롭습니다…ㅠㅠ
파이프(|)를 사용하는 모습입니다. 이거 생각보다 구현하기가 까다롭습니다…ㅠㅠ 리다이렉트의 생성&추가를 해보는 모습입니다. 표준입출력의 기본이죠.
리다이렉트의 생성&추가를 해보는 모습입니다. 표준입출력의 기본이죠. 백그라운드 프로세스(&)를 실행하는 모습입니다. sleep명령어를 수행하면 그 시간만큼 쉘이 멈춰있게 되는데 바로 다른 명령어를 입력받는것을 볼 수 있습니다. 이거 구현을 조금 야매로 한 감이 있긴 한데 정상 동작을 하는 듯하면서도 아닌듯 하면서도;; 아하하…아무튼 그렇습니다.
백그라운드 프로세스(&)를 실행하는 모습입니다. sleep명령어를 수행하면 그 시간만큼 쉘이 멈춰있게 되는데 바로 다른 명령어를 입력받는것을 볼 수 있습니다. 이거 구현을 조금 야매로 한 감이 있긴 한데 정상 동작을 하는 듯하면서도 아닌듯 하면서도;; 아하하…아무튼 그렇습니다.