android.os.Process.killProcess(pid)再次重启了进程

时间:2014-04-23 04:44:32

标签: android process

killprocess方法确实会终止进程,但为什么进程会再次重新启动,以及为了不再次重新启动进程而执行的操作。这是我的代码。

ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> services = manager.getRunningAppProcesses();
for (RunningAppProcessInfo info : services) {   
    int service1name = info.pid;
    android.os.Process.killProcess(service1name);
}

感谢您的关注。

2 个答案:

答案 0 :(得分:0)

实际上通过killProcess杀死的进程重启进程,因为android os假设进程因崩溃而被关闭并重新启动它。我发现我们可以使用更高优先级的am(活动管理器)来终止进程。示例可以在这里找到:

try {

                Log.d("Application all process", "killing++");
            String killCommand = 
                        "am force-stop com.nil.android.ssd";
                runAsRoot(new String[]{killCommand},true);
            } catch (Exception e) {
                e.printStackTrace();
            }


    public static void runAsRoot(String[] cmds, boolean shouldExit) {
        try {
            Process p = Runtime.getRuntime().exec("su");
            DataOutputStream os = new DataOutputStream(p.getOutputStream());
            for (String tmpCmd : cmds) {
                os.writeBytes(tmpCmd + "\n");
            }
            if (shouldExit) {
                os.writeBytes("exit\n");
            }
            os.flush();
        } catch (Exception iOException) {
            iOException.printStackTrace();
        }
    }

答案 1 :(得分:-1)

我遇到了类似的问题,并用

解决了
   this.finishAffinity();

这得到API级别16的支持。