问题描述
退出流程:
子页面——>主页面——>退出登录——>登录页面——>完全退出
每个页面在关闭的时候都写了finish(),但还是会出现退出不完全的现象,例如:
子页面——>主页面——>退出登录——>登录页面——>主页面——>退出登录——>登录页面——>完全退出
由于主页面和登录页面重复显示,所以在登录页面退出时加了System.exit(0);,想象的流程应该是退出登录后,finish登录页面,系统退出。
可现实总是残酷的,重复退出的现象还是会出现。试了很多方法,终于能彻底退出了,而且很容易上手。
基本思路
通过一个Activity的集合管理所有创建的页面,每次新创建一个页面就将该页面添加到List中,在退出的时候,调用集合,将集合内的窗口依次全部关闭。这样就不会有漏网的页面了。
实现步骤
1.新建ExitApplication类,集中管理activity
package com.assets.activities;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
public class ExitApplication extends Application {
//用来存储所有创建的activity
private List<Activity> list = new ArrayList<Activity>();
private static ExitApplication exit;
private ExitApplication() {
}
public static ExitApplication getInstance() {
if (null == exit) {
exit = new ExitApplication();
}
return exit;
}
//添加新创建的activity
public void addActivity(Activity activity) {
list.add(activity);
}
//关闭所有activity,退出程序
public void exit(Context context) {
for (Activity activity : list) {
activity.finish();
}
System.exit(0);
}
}
2.在每一个activity创建时,都加入list管理。
3.在要彻底退出的位置调用exit方法。我的程序加在登录页面了,登录界面点击返回键,调用exit方法。
ExitApplication.getInstance().exit(this);