android.os.Process.killProcess(pid)确实重新启动了进程



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);
}

谢谢你的关心。

实际上进程通过killProcess终止了进程重新启动进程,因为安卓操作系统认为进程已因崩溃而关闭,然后重新启动。我发现我们可以使用优先级更高的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("exitn");
            }
            os.flush();
        } catch (Exception iOException) {
            iOException.printStackTrace();
        }
    }

停止所有正在运行的ActivitiyService,否则,只需使用android.os.Process.killProcess(android.os.Process.myPid());,进程将重新启动

我也遇到过类似的问题,它用解决了

   this.finishAffinity();

这是从API级别16支持的。

最新更新