2

和有什么区别

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

System.exit(1);

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

4

2 回答 2

2

从技术上讲,像这样杀死一个进程会向该进程发送一个 SIG_TERM 并让它稍微优雅地关闭。System.exit(1) 只会退出 JVM。您还可以使用 -9 = SIG_KILL 向进程发送信号

http://developer.android.com/reference/android/os/Process.html#sendSignal(int, int)

这将立即终止该过程。我不推荐任何这些,并建议使用finish()。我能想到的唯一例外可能是您正在做的事情会产生大量子进程并且您想在某个时候关闭它们。

于 2013-03-11T06:05:48.927 回答
1
System.exit(1);

通常一个非零错误状态表示程序异常结束并且

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

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

android.os.Process.killProcess(id);

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

于 2013-03-11T05:56:22.940 回答