android关闭其他app

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,完结撒花

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值