Android退出应用程序探讨

退出方式

Android退出程序的两种方式:killProcess()System.exit()

killProcess()

调用

android.os.Process.killProcess(android.os.Process.myPid())

可以杀死当前应用活动的进程,这一操作将会把所有该进程内的资源(包括线程全部清理掉)。当然,由于ActivityManager时刻监听着进程,一旦发现进程被非正常Kill,它将会试图去重启这个进程。这就是为什么,有时候当我们试图这样去结束掉应用时,发现它又自动重新启动的原因,下文将会降到应用自杀重启的条件。

System.exit()

System.exit()其实是Java中结束进程的方法,调用它将关闭当前的JVM虚拟机。

System.exit(0)System.exit(1)的区别:

  • System.exit(0)表示是正常退出
  • System.exit(1)表示是非正常退出,通常这种退出方式应该放在catch块中

APP自杀重启

无论是killProcess()方式,还是System.exit()方式,在主线程中杀死应用均会尝试重启应用,在子线程中杀死应用则不会重启应用。

主UI线程执行

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //android.os.Process.killProcess(android.os.Process.myPid());
    System.exit(0);
}

可见APP不断自杀重启,进程号也在改变

04-17 16:15:06.087 1115-1115/cn.appblog.killapp I/yezhou: AppApplication.onCreate
04-17 16:15:06.943 1424-1424/cn.appblog.killapp I/yezhou: AppApplication.onCreate
04-17 16:15:07.772 1677-1677/cn.appblog.killapp I/yezhou: AppApplication.onCreate
04-17 16:15:08.628 1952-1952/cn.appblog.killapp I/yezhou: AppApplication.onCreate
04-17 16:15:09.431 2167-2167/cn.appblog.killapp I/yezhou: AppApplication.onCreate
04-17 16:15:10.245 2357-2357/cn.appblog.killapp I/yezhou: AppApplication.onCreate
04-17 16:15:11.052 2566-2566/cn.appblog.killapp I/yezhou: AppApplication.onCreate
04-17 16:15:12.044 2758-2758/cn.appblog.killapp I/yezhou: AppApplication.onCreate
04-17 16:15:12.845 2960-2960/cn.appblog.killapp I/yezhou: AppApplication.onCreate
04-17 16:15:13.844 3148-3148/cn.appblog.killapp I/yezhou: AppApplication.onCreate
04-17 16:15:14.681 3316-3316/cn.appblog.killapp I/yezhou: AppApplication.onCreate

子线程执行

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            //android.os.Process.killProcess(android.os.Process.myPid());
            System.exit(0);
        }
    }, 2000);
}

可见APP不再启动

04-17 16:17:16.398 5087-5087/com.lianlianpay.webview I/yezhou: AppApplication.onCreate
上一篇 Android Activity外观设置
下一篇 Android多渠道打包之动态修改App名称,图标,applicationId,版本号,添加资源
目录
文章列表
1 Python格式化千分位数字
Python格式化千分位数字
2
MongoDB后台管理Shell
MongoDB后台管理Shell
3
OpenCart添加第三方及自定义Library库
OpenCart添加第三方及自定义Library库
4
Java多线程编程五(线程间通信之ThreadLocal)
Java多线程编程五(线程间通信之ThreadLocal)
5
Bigcommerce支付网关设计
Bigcommerce支付网关设计
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。