Android堆栈管理的类ActivityStackManager

来源:互联网 发布:淘宝详情页模板视频 编辑:程序博客网 时间:2024/05/17 05:43

实战项目中管理Activity的类,一般在BaseActivity会调用这个类,然后所有的Activity继承BaseActivity,这样管理好整个项目的Activity。


截图取自百度图片
// activity堆栈管理public class ActivityStackManager {    private static ActivityStackManager mInstance;    private static Stack<Activity> mActivityStack;    public static ActivityStackManager getInstance() {        if (null == mInstance) {            mInstance = new ActivityStackManager();        }        return mInstance;    }    private ActivityStackManager() {        mActivityStack = new Stack<Activity>();    }    // 入栈    public void addActivity(Activity activity) {        mActivityStack.push(activity);    }    // 出栈    public void removeActivity(Activity activity) {        mActivityStack.remove(activity);    }    //  彻底退出    public void finishAllActivity() {        Activity activity;        while (!mActivityStack.empty()) {            activity = mActivityStack.pop();            if (activity != null) {                activity.finish();            }        }    }    // 结束指定类名的Activity    public void finishActivity(Class<?> cls) {        for (Activity activity : mActivityStack) {            if (activity.getClass().equals(cls)) {                finishActivity(activity);            }        }    }    // 查找栈中是否存在指定的activity    public boolean checkActivity(Class<?> cls) {        for (Activity activity : mActivityStack) {            if (activity.getClass().equals(cls)) {                return true;            }        }        return false;    }    // 结束指定的Activity    public void finishActivity(Activity activity) {        if (activity != null) {            mActivityStack.remove(activity);            activity.finish();            activity = null;        }    }    // finish指定的activity之上所有的activity    public boolean finishToActivity(Class<? extends Activity> actCls, boolean isIncludeSelf) {        List<Activity> buf = new ArrayList<Activity>();        int size = mActivityStack.size();        Activity activity = null;        for (int i = size - 1; i >= 0; i--) {            activity = mActivityStack.get(i);            if (activity.getClass().isAssignableFrom(actCls)) {                for (Activity a : buf) {                    a.finish();                }                return true;            } else if (i == size - 1 && isIncludeSelf) {                buf.add(activity);            } else if (i != size - 1) {                buf.add(activity);            }        }        return false;    }}


文/Penny08(简书作者)
原文链接:http://www.jianshu.com/p/ed897d567b02
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
0 0
原创粉丝点击