封装Activity的堆栈管理类。

本文介绍了一个用于Android应用程序的活动栈管理工具类。该工具能够帮助开发者轻松实现从任意Activity返回到指定Activity的需求,通过添加和移除Activity来管理栈结构,简化了导航逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值