Android退出应用程序探讨

退出方式

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

killProcess()

调用

1
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线程执行

1
2
3
4
5
6
7
@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不断自杀重启,进程号也在改变

1
2
3
4
5
6
7
8
9
10
11
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

子线程执行

1
2
3
4
5
6
7
8
9
10
11
12
@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不再启动

1
04-17 16:17:16.398 5087-5087/com.lianlianpay.webview I/yezhou: AppApplication.onCreate

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2020 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :