封装Activity的堆栈管理类。

来源:互联网 发布:牛耳软件学院图片 编辑:程序博客网 时间:2024/05/21 15:17

前言

提供一个工具类,应用场景: A、B、C 为三个不同的 activity
当我们从 A 跳转到 B, 再从 B跳转到 C ,此时,我们有这样一个需求,就是如何从 C 跳转到 A ,难道我们还要 new 一个 intent 吗,不,我们只需要移除 B 这个堆栈 直接把 C finish()就行了。
这个工具类可以应用到项目中,在BaseActivity onCreate()方法中,调用 AppMannager.getInstance().addActivity(Activity activity);在onDestroy()方法中调用AppMannager.getInstance().deleteActivity(Activity activity);
这样我们就可以清楚的知道堆栈中的情况了。

代码

import android.app.Activity;import java.util.Stack;public class AppMannager {    private  static  AppMannager appManager ;    private Stack<Activity> listActivitys = new Stack<>();    /*    * 得到实例    * */    public  static   AppMannager getInstance(){        if(appManager == null)        {            appManager = new AppMannager();        }        return appManager ;    }    /*    * 添加actviity    * */    public void addActivity(Activity activity){        listActivitys.add(activity) ;    }    /*    * 移除activity    * */    public void removeActivity(Activity activity){        for(int i = 0 ; i < listActivitys.size() - 1; i ++)        {            if(listActivitys.get(i).getClass().equals(activity.getClass()))            {                activity.finish();                listActivitys.remove(activity);            }        }    }    /*    * 移除当前的activity 的栈    * */    public void removeCurrent( ){        Activity activity = listActivitys.lastElement(); //最上面的 也就是第一个栈        activity.finish();        listActivitys.remove(activity);    }    /*    * 移除所有的栈    * */    public void removeAll(){        for(int i = listActivitys.size() - 1 ; i >= 0 ; i -- )        {            listActivitys.get(i).finish();            listActivitys.remove(i);        }    }    /*    * 得到当前的栈    * */    public int  getStackSize(){        return listActivitys.size() ;    }}