系统对Activity是一种栈的管理,当我们调用finish方法的时候,系统的Activity栈就会自动pop掉该Activity。
每次我们onCreate一个新的Activity的时候,相应的,也会自动push进去。
有的时候,系统的Activity栈不能满足我们的操作,我们就需要自己写一个Activity管理类。
public class ActivityManager { private static Stack<Activity> activityStack; private static ActivityManager instance; private ActivityManager() { } public static ActivityManager getInstance() { if (instance == null) { instance = new ActivityManager(); } return instance; } /**- * 退出栈顶Activity * @param activity [Activity类] * 2011-12-19 */ public void popActivity(Activity activity) { activity.finish(); activityStack.remove(activity); activity = null; } /** * 获得当前栈顶Activity * @return Activity * 2011-12-19 */ public Activity currentActivity() { Activity activity = null; if (activityStack != null) { if (!activityStack.empty()) activity = activityStack.lastElement(); } return activity; } /** * 将当前Activity推入栈中 * @param activity [Activity类] * 2011-12-19 */ public void pushActivity(Activity activity) { if (activityStack == null) { activityStack = new Stack<Activity>(); } activityStack.add(activity); } /** * 退出栈中所有Activity * @param cls [class类] * 2011-12-19 */ public void popAllActivityExceptOne(Class cls) { while (true) { Activity activity = currentActivity(); if (activity == null) { break; } if (activity.getClass().equals(cls)) { break; } popActivity(activity); } } }