Tag Archives: 안드로이드

[Java/Android] 현재 실행중인 어플리케이션을 백그라운드로 전환하기

현재 실행중인 어플리케이션을 백그라운드로 전화하기 위해서(다른 말로는 즉시 홈스크린을 띄우기 위해서)는 두가지 방법을 사용할 수 있습니다. moveTaskToBack라는 메서드를 사용하거나 Intent를 이용하여 홈을 띄우는 방법이 있습니다.

1. 메서드 활용하기

Activity에서 호출이 가능한 moveTaskToBack(boolean nonRoot)라는 메서드는 인자로 boolean형을 받고 결과값을 boolean형으로 반환합니다. 이 메서드는 현재의 엑티비티가 속해있는 테스크를 백그라운드로 즉시 이동시킵니다. 정상적으로 이동이 되었다면 true가 반환이 되며 이동에 실패할 경우 false가 반환됩니다.

하나의 인자를 받는데 true를 입력할 경우 어떠한 경우라도 상관없이 백그라운드로 이동을 시킵니다. false일 경우 현재의 엑티비티가 루트(root)일 경우에만 백그라운드로 이동시킵니다. 루트라는 말은 태스크의 가장 첫번째(바닥)의 엑티비티임을 뜻합니다.

2. Intent 활용하기

1에서 소개해드린 방법으로도 백그라운드로 전환되지 않는 특정한 상황이 있다고 합니다. 그 경우 다음의 인텐트를 활용하는 방법을 사용하면 100% 전환이 이루어집니다. 1의 방법은 엑티비티를 백그라운드로 넘기는 방법이고 이방법은 홈스크린을 현재의 화면으로 끌고 오는 방법입니다. 간단하게 다음의 코드를 사용하시면 됩니다.

Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);

다음은 위의 두가지 방법을 테스트 해볼수 있는 예제 소스를 올려드립니다. [다운로드]

사용자 삽입 이미지

[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]