android 之定義的棧來管理activity
阿新 • • 發佈:2019-01-25
當我們想實現一個功能從螢幕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);
}
}
}