Android程序退出,杀掉进程

来源:互联网 发布:消防工程师 知乎 编辑:程序博客网 时间:2024/06/05 08:25

在Activity中,监听返回键的事件,event.getRepeatCount() == 0是确定只按了一次返回键,防止重复触发。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
kill();
return true;
}
return super.onKeyDown(keyCode, event);
}

在kill方法中,删除进程。

private void kill() {
// 返回主界面,相当于按了HOME键
Intent mHomeIntent = new Intent(Intent.ACTION_MAIN);

mHomeIntent.addCategory(Intent.CATEGORY_HOME);
mHomeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
startActivity(mHomeIntent);


// 执行Kill命令,删除指定进程
killProcess("com.dinglicom.airrunner.sensor.simple:UI");
// android.os.Process.killProcess(android.os.Process.myPid());
}

获取全部进程,再根据进程名删除进程:

private void killProcess(String killName) {
// 获取一个ActivityManager 对象
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);


// 获取系统中所有正在运行的进程
List<RunningAppProcessInfo> appProcessInfos = activityManager
.getRunningAppProcesses();


// 对系统中所有正在运行的进程进行迭代,如果进程名所要杀死的进程,则Kill掉
for (RunningAppProcessInfo appProcessInfo : appProcessInfos) {
String processName = appProcessInfo.processName;
if (processName.equals(killName)) {
killProcessByPid(appProcessInfo.pid);
}
}
}

private void killProcessByPid(int pid) {
String command = "kill -9 " + pid + "\n";
Runtime runtime = Runtime.getRuntime();
Process proc;
try {
proc = runtime.exec(command);
if (proc.waitFor() != 0) {
System.err.println("exit value = " + proc.exitValue());
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (InterruptedException e) {
System.err.println(e);
}
}

双击退出应用的功能参考:http://blog.sina.com.cn/s/blog_4fd2a65a0101gg2o.html

1 0
原创粉丝点击