问题:Android中应用程序弹出退出对话框退出应用程序时,老是出现上一个Activity,于是将在Activity跳转时将其finish()掉,结果还是不行!
寻其原因:原来项目中有好多Activity用来显示界面,之间还掺扎着数据信息的交流,我们知道Activity是以栈的方式存放,要想将程序退出,自然得将众多Activity销毁掉了!
解决办法:一种比较流行的Android经典完美退出方法:使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器(具体实现自己处理,使用LinkedList等)专门负责存储新开启的每一个Activity,并且容易理解、易于操作,非常不错!
步骤如下,3步搞定!
1).MyApplication类(储存每一个Activity,并实现关闭所有Activity的操作)
public class MyApplication extends Application { //对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList实现了基于动态数组的数据结构,要移动数据。LinkedList基于链表的数据结构,便于增加删除 private List<Activity> activityList = new LinkedList<Activity>(); private static MyApplication instance; private MyApplication(){ } //单例模式中获取唯一的MyApplication实例 public static MyApplication getInstance() { if(null == instance) { instance = new MyApplication(); } return instance; } //添加Activity到容器中 public void addActivity(Activity activity) { activityList.add(activity); } //遍历所有Activity并finish public void exit(){ for(Activity activity:activityList) { activity.finish(); } System.exit(0); } }
2)在每一个Activity中的onCreate方法里添加该Activity到MyApplication对象实例容器中
MyApplication.getInstance().addActivity(this);
3)在需要结束所有Activity的时候调用exit方法
MyApplication.getInstance().exit();