Android进阶篇Activity管理

系统对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);
        }
    }
}
原文地址:https://www.cnblogs.com/gongcb/p/2528518.html