当我们想实现一个功能从屏幕A—>屏幕B—>屏幕C—>屏幕D,然后在转到屏幕D之前将屏幕B和C关闭,在屏幕 B和屏幕C界面点击会退按钮都可以回退到上一个屏幕,但是在屏幕D上点击会退按钮让其回退到A,此外在一些循环跳转的界面上如果不在合适的地方将一些不需要的屏幕关闭,那么经过多次跳转后回导致内存溢出。对此我们可以设计一个全局的Activity栈,使用这个栈来管理Activity。管理 Activity的类的定义如下:
package com.azhuoinfo.gbf.activity;
import android.app.Activity;
import java.util.Stack;
/**
* Created by Administrator on 2016/1/9.
*/
public class ManagerStack {
private static Stack<Activity> activityStack;
private static ManagerStack instance;
private ManagerStack(){}
public static ManagerStack getManagerStack(){
if(instance==null){
instance=new ManagerStack();
}
return instance;
}
public void popActivity(){
Activity activity=activityStack.lastElement();
if(activity!=null){
activity.finish();
activity=null;
}
}
public void popActivity(Activity activity){
if(activity!=null){
activity.finish();
activity=null;
}
}
public Activity currentActivity(){
Activity activity=activityStack.lastElement();
return activity;
}
public void pushActivity(Activity activity){
if(activityStack==null){
activityStack=new Stack<Activity>();
}
activityStack.add(activity);
}
public void popAllActivityExceptOne(Class cla){
while (true){
Activity activity=currentActivity();
if(activity==null){
break;
}
if(activity.getClass().equals(cla)){
break;
}
popActivity(activity);
}
}
}