1.am.killBackgroundProcesses(String packageName);
这个方法只能停止在后台的应用,如果应用在前台就不能用。
2.andorid.os.Process.killProcess(int pid);
这个方法对于前台应用同样没用,因为的我需求时杀死前台的app所以没有测试后台是否能够杀死,但是这个用来大范围的杀死后台进程是比较好用的,代码可以参考:
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> infos = am.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo info:infos) {
if (info.processName.equals(MainActivity.packageName)){
android.os.Process.killProcess(info.pid);
}
3命令行的方法,这个方法需要root,Runtime.getRuntime().exec(cmd);
这个方式运行了命令行,所以是能够杀死前台应用的,但是exec方法是异步方法,我想要获取它执行完的时间,因为后续还有操作所以最后是这样
try {
Process process = Runtime.getRuntime().exec("su");
OutputStream out = process.getOutputStream();
String cmd = "am force-stop " + pn + " \n";
out.write(cmd.getBytes());
out.flush();
out.close();
InputStream fis=process.getInputStream();
//用一个读输出流类去读
InputStreamReader isr=new InputStreamReader(fis);
//用缓冲器读行
BufferedReader br=new BufferedReader(isr);
String line=null;
//直到读完为止 目的就是要阻塞当前的线程到命令结束的时间
while((line=br.readLine())!=null)
{
MyLog.e(line);
}
process =null;
} catch (IOException e) {
e.printStackTrace();
}
如果只是要结束后台进程,根据需求用1,2,如果要结束前台进程用3,完结撒花