android runtime.getruntime().exec()获取进程ID

Har*_*ari 6 android pid process

如何获取runtime.getruntime().exec()通过Android应用程序启动的进程的进程ID ?

这是问题..我从UI APP使用runtime.getruntime().exec()启动一个进程.如果我的Android UI应用程序仍在运行,我可以使用destroy来终止进程..但是说我使用home或back按钮退出应用程序,当我重新打开ui app时,进程对象为null.那么我需要进程的PID来杀死它.

有一个更好的方法吗?

Eny*_*yby 8

Android java.lang.Process实现是java.lang.ProcessManager$ProcessImpl,它有字段private final int pid;.它可以来自反思:

public static int getPid(Process p) {
    int pid = -1;

    try {
        Field f = p.getClass().getDeclaredField("pid");
        f.setAccessible(true);
        pid = f.getInt(p);
        f.setAccessible(false);
    } catch (Throwable e) {
        pid = -1;
    }
    return pid;
}
Run Code Online (Sandbox Code Playgroud)

另一种方法 - 使用toString:

    public String toString() {
        return "Process[pid=" + pid + "]";
    }
Run Code Online (Sandbox Code Playgroud)

你可以解析输出并获得没有反射的pid.


小智 -3

尝试以下操作:
int p_Id = android.os.myPid(); 详情

  • myPid() 返回您的应用程序的 PID,而不是您使用 getRuntime().exec() 启动的进程。 (2认同)