andriod一次退出所有的Activity

自己实现了一个Activity管理,可以实现一次退出所有的Activity。在Activity启动的时候,将调用里面的put方法,将Activity对象加入进来。在要退出某个activity的时候,将其remove。如果要退出所有的Activity,调用closeAllActivity即可。 

  1 /*
  2  * @(#)ActivityManager.java               version: 0.1 
  3  * Date:2012-2-3
  4  *
  5  * Copyright (c) 2011 CFuture09, Institute of Software, 
  6  * Guangdong Ocean University, Zhanjiang, GuangDong, China.
  7  * All rights reserved.
  8  */
  9 package com.sinaapp.msdxblog.androidkit.ui.util;
 10 
 11 import java.util.HashMap;
 12 
 13 import java.util.Set;
 14 
 15 import android.app.Activity;
 16 
 17 /**
 18  * 一个Activity管理器管理活动的Activity。
 19  * 
 20  * @author Geek_Soledad (66704238@51uc.com)
 21  */
 22 public class ActivityTaskManager {
 23 
 24     private static ActivityTaskManager activityTaskManager = null;
 25     private HashMap<String, Activity> activityMap = null;
 26 
 27     private ActivityTaskManager() {
 28         activityMap = new HashMap<String, Activity>();
 29     }
 30 
 31     /**
 32      * 返回activity管理器的唯一实例对象。
 33      * 
 34      * @return
 35      */
 36     public static synchronized ActivityTaskManager getInstance() {
 37         if (activityTaskManager == null) {
 38             activityTaskManager = new ActivityTaskManager();
 39         }
 40         return activityTaskManager;
 41     }
 42 
 43     /**
 44      * 将一个activity添加到管理器。
 45      * 
 46      * @param activity
 47      */
 48     public Activity putActivity(String name, Activity activity) {
 49         return activityMap.put(name, activity);
 50     }
 51 
 52     /**
 53      * 得到保存在管理器中的Activity对象。
 54      * 
 55      * @param name
 56      * @return
 57      */
 58     public Activity getActivity(String name) {
 59         return activityMap.get(name);
 60     }
 61 
 62     /**
 63      * 返回管理器的Activity是否为空。
 64      * 
 65      * @return 当且当管理器中的Activity对象为空时返回true,否则返回false。
 66      */
 67     public boolean isEmpty() {
 68         return activityMap.isEmpty();
 69     }
 70 
 71     /**
 72      * 返回管理器中Activity对象的个数。
 73      * 
 74      * @return 管理器中Activity对象的个数。
 75      */
 76     public int size() {
 77         return activityMap.size();
 78     }
 79 
 80     /**
 81      * 返回管理器中是否包含指定的名字。
 82      * 
 83      * @param name
 84      *            要查找的名字。
 85      * @return 当且仅当包含指定的名字时返回true, 否则返回false。
 86      */
 87     public boolean containsName(String name) {
 88         return activityMap.containsKey(name);
 89     }
 90 
 91     /**
 92      * 返回管理器中是否包含指定的Activity。
 93      * 
 94      * @param activity
 95      *            要查找的Activity。
 96      * @return 当且仅当包含指定的Activity对象时返回true, 否则返回false。
 97      */
 98     public boolean containsActivity(Activity activity) {
 99         return activityMap.containsValue(activity);
100     }
101 
102     /**
103      * 关闭所有活动的Activity。
104      */
105     public void closeAllActivity() {
106         Set<String> activityNames = activityMap.keySet();
107         for (String string : activityNames) {
108             finisActivity(activityMap.get(string));
109         }
110         activityMap.clear();
111     }
112 
113     /**
114      * 关闭所有活动的Activity除了指定的一个之外。
115      * 
116      * @param nameSpecified
117      *            指定的不关闭的Activity对象的名字。
118      */
119     public void closeAllActivityExceptOne(String nameSpecified) {
120         Set<String> activityNames = activityMap.keySet();
121         Activity activitySpecified = activityMap.get(nameSpecified);
122         for (String name : activityNames) {
123             if (name.equals(nameSpecified)) {
124                 continue;
125             }
126             finisActivity(activityMap.get(name));
127         }
128         activityMap.clear();
129         activityMap.put(nameSpecified, activitySpecified);
130     }
131 
132     /**
133      * 移除Activity对象,如果它未结束则结束它。
134      * 
135      * @param name
136      *            Activity对象的名字。
137      */
138     public void removeActivity(String name) {
139         Activity activity = activityMap.remove(name);
140         finisActivity(activity);
141     }
142 
143     private final void finisActivity(Activity activity) {
144         if (activity != null) {
145             if (!activity.isFinishing()) {
146                 activity.finish();
147             }
148         }
149     }
150 }

此类已经收录在我的工具包中,地址为:http://code.google.com/p/cfuture-androidkit/ 

原文地址:https://www.cnblogs.com/huolongluo/p/6071103.html