杀死进程与System.exit(0)之间的区别;

时间:2013-03-11 05:42:56

标签: java android process

之间有什么区别
int id= android.os.Process.myPid();
android.os.Process.killProcess(id);

System.exit(1);

我知道两者都会杀死这个过程。 但是,我感觉不同的是,在杀死一个进程时,当它重新启动时,它会从之前的状态启动。但是,我想知道这种错误背后的技术细节。

2 个答案:

答案 0 :(得分:2)

从技术上讲,杀死这样的进程会向进程发送一个SIG_TERM并让它在某种程度上优雅地关闭。 System.exit(1)将退出JVM。您还可以使用

向进程发送-9 = SIG_KILL信号
http://developer.android.com/reference/android/os/Process.html#sendSignal(int, int)

这会立即杀死这个过程。我不推荐任何这些,并建议使用finish()。我能想到的唯一例外可能是,如果你正在做一些产生很多子进程的东西,你想在某些时候关闭它们。

答案 1 :(得分:1)

System.exit(1);

通常非零错误状态表示程序异常终止

int id= android.os.Process.myPid();

Process是用于管理操作系统进程的工具。

android.os.Process.killProcess(id);

使用给定的PID终止进程。请注意,尽管此API允许我们根据其PID请求终止任何进程,但内核仍将对您实际可以杀死的PID施加标准限制。通常,这意味着只有运行调用者的包/应用程序的进程以及该应用程序创建的任何其他进程;共享公共UID的软件包也可以杀死彼此的进程。