您的位置:首页 > 其它

封装Activity的堆栈管理类。

2017-12-22 12:35 316 查看

前言

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: