Android杀进程的两种方式:System.exit()和Process.killProcess()

Quibbler 16天前 68

Android杀进程的两种方式:System.exit()和Process.killProcess()


        Android上杀掉进程的方式有两种:System.exit(0)Process.killProcess(Process.myPid()),这两种方式有些许区别。


1、相同点


1.1、APP进程都会被直接杀掉

        我们通过adb shell ps可以查看当前手机所有运行的进程状态,

        在执行完这两种方式之后,APP进程都会消失。


1.2、生命周期都不会被调用

        onPause()onStop()onDestory(),也包括onSaveInstanceState(),这些生命周期方法都不会被调用。



2、不同点


2.1、影响范围不同

        System.exit(0)只会影响当前的程序;

        Process.killProcess(Process.myPid())会杀掉所有PID一样的进程,比如那些拥有相同UID的应用,统统都会被杀掉。


2.2、方式不一样

        System.exit(0)是停止程序的虚拟机;System.exit(0)System.exit(1),看官方的方法注释,如下:

    Use 0 to signal success to the calling process and 1 to signal failure.
    1
    0:代表成功的信号(正常退出);
    1:代表失败的信号(异常退出),常用于捕获到异常执行。

       Process.killProcess(Process.myPid()) 是通过PID去杀死进程。



        从上面可以看出,这两种方式都比较暴力,不推荐使用,尤其是现在的手机配置都很好的情况下。而且进程都被杀掉了,相应的Service也会被杀掉,如果存在推送的话,会出现各种莫名的问题。

        真要用的话,也得注意:如果程序有多个Activity,最好在主Activity中的onBackPressed()中使用,如果在其它Activity中使用的话,APP会直接退出,退出后会重启应用,这样对于用户体验不是很好。


不忘初心的阿甘
最新回复 (0)
    • 安卓笔记本
      2
        登录 注册 QQ
返回
仅供学习交流,切勿用于商业用途。如有错误欢迎指出:fluent0418@gmail.com