相同点
APP进程都会被直接杀掉
我们通过adb shell ps可以查看当前手机所有运行的进程状态,
在执行完这两种方式之后,APP进程都会消失。
生命周期都不会被调用
onPause()、onStop()和onDestory(),也包括onSaveInstanceState,这些生命周期方法都不会被调用。
不同点
影响范围不同
System.exit(0)只会影响当前的程序;
Process.killProcess(Process.myPid())会杀掉所有PID一样的进程,比如那些拥有相同UID的应用,统统都会被杀掉。
方式不一样
System.exit(0)是停止程序的虚拟机;
Process.killProcess(Process.myPid()) 是通过PID去杀死进程。
补充
System.exit(0)和System.exit(1)
看官方的方法注释,如下:
Use 0 to signal success to the calling process and 1 to signal failure.
0:代表成功的信号;
1:代表失败的信号,常用于捕获到异常执行。
本文探讨了System.exit(0)与Process.killProcess(Process.myPid())两种终止Android应用进程方法的不同之处。主要区别在于影响范围、执行方式及生命周期回调等方面,并简要介绍了这两种方法的使用场景。

459

被折叠的 条评论
为什么被折叠?



