封装Activity的堆栈管理类。

前言

提供一个工具类,应用场景: 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() ;
    }

}

猜你喜欢

转载自blog.csdn.net/baidu_38477614/article/details/78872010
今日推荐