Android中退出APP的解决方案

Catalogue
  1. 1 抛出异常退出
  2. 2 记录打开的activity并逐一关闭
  3. 3 发送特定广播实现安全退出(推荐)
  4. 4 递归退出每个Activity

对于单一Activity的应用来说,退出很简单,直接调用finish()方法即可。但是对于多个activity的应用来说,当打开多个activity后,想再最后一个activity中直接退出app,这就需要每个activity都关掉,然后退出。下面介绍四种安全退出已调用多个activity的application的方法。

1 抛出异常退出

该方法通过抛出异常,使程序强制关闭。但是,这种方法会让程序弹出Force close的弹窗,用户体验很差。

2 记录打开的activity并逐一关闭

这种方法的操作需要抽取到Activity的父类中进行,在父类的onCreate()中将每个打开的Activity加载到一个activity的集合中。当退出时,需要在父类定义一个killAll()方法,在该方法复制一个Activity的集合,然后遍历复制后的集合关闭所有打开的Activity。

3 发送特定广播实现安全退出(推荐)

在需要结束应用时,发送一个特定广播,每个Activity收到广播后,关闭即可。在这个过程中,注册广播接受者的逻辑可以抽取到父类中实现,需要安全退出时,发送的action为注册时指定的action即可,所有开启的activity都注册有能够响应改action的广播接受者,广播接受者接受到此类广播后,将直接调用finish()方法,关闭当前Activity。

4 递归退出每个Activity

当需要打开新的activity时,使用startActivityForResult()方法打开Activity,需要退出整个应用时,自定义一个标志退出的Flag,在各个activity的onActivityResult方法中处理该Flay,来实现递归关闭。