不像iOS应用那样有统一的退出方式,Android是给用户自己退出的方式的。
网上查了查,有几个方式
- 杀进程
- System.exit(0)
- 逐个删除Activity。
这几种方式除了第3中外都只是把当前Activity清理掉了,没有考虑其他页面。
所以我采取的方法是先逐个删除Activity,然后在exit(0)正常退出。
用一个单例进行管理。
不说了,我直接上代码。
public class ExitApp extends Application {
//单例相关。
private ExitApp() {}
private static class InsideExitApp {
private static final ExitApp singleton = new ExitApp();
}
public static final ExitApp shareExitApp() {
return InsideExitApp.singleton;
}
//用来存放Activity实例
private ArrayList<Activity> activities = new ArrayList<>();
//添加Activity
public void addActivity(Activity activity){
activities.add(activity);
}
//逐个删除Activity
@Override
public void onTerminate() {
super.onTerminate();
for(Activity activity:activities) {
if (activity == null)continue;
activity.finish();
}
System.exit(0);
}
}
只需要在每个Activity创建之初把它添加到单例之中即可,在需要用户手动退出的时候调用onTerminate()
即可。