Android程序退出,杀掉进程

本文介绍了如何在Android Activity中监听返回键事件,并通过检查事件重复次数来避免重复触发。同时,提供了实现双击退出应用功能的方法,并展示了如何获取当前运行的所有进程并根据指定进程名进行删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值