잘 정리되어있는 휴님의 자료를 참조하여 정리해본다.
출처 : http://huewu.blog.me/110089551997
두가지 방법이 존재 하게 되는데 첫번째로 아래와 같이 확인 할 수 있다.
첫 번째 방법
[sourcecode language="JAVA"]
System.exit();
[/sourcecode]
두번 째 방법
[sourcecode language="JAVA"]
public void requestKillProcess(final Context context){
//#1. first check api level.
int sdkVersion = Integer.parseInt(Build.VERSION.SDK);
if (sdkVersion < 8){
//#2. if we can use restartPackage method, just use it.
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
}else{
//#3. else, we should use killBackgroundProcesses method.
new Thread(new Runnable() {
public void run() {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
String name = getApplicationInfo().processName;
RunningServiceInfo si;
//pooling the current application process importance information.
while(true){
List list = am.getRunningAppProcesses();
for(RunningAppProcessInfo i : list){
if(i.processName.equals(name) == true){
//#4. kill the process,
//only if current application importance is less than IMPORTANCE_BACKGROUND
if(i.importance >= RunningAppProcessInfo.IMPORTANCE_BACKGROUND)
am.restartPackage(getPackageName()); //simple wrapper of killBackgrounProcess
else
Thread.yield();
break;
}
}
}
}
}, "Process Killer").start();
}
}
[/sourcecode]
휴님이 블러그를 참조하였다.
테스트를 해보니 동작이 안된다. -_- 내가 잘못한건가?