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