android 从开始到现在在,退出程序的方法多种多样,部分方法只适合某些版本,所以根据版本特性来选择合适的退出Activity的方法。
最近在项目当中遇到了完全退出程序的问题。总想找一种比较漂亮的方式来实现。最终发现可以利用Stack来管理所有的Activity。
Activity管理类,与android自身管理类没有关系哈
import java.util.Stack;
import android.app.Activity;
public class ActivityManager {
private static Stack activityStack;
private static ActivityManager instance;
private ActivityManager(){
}
public static ActivityManager getScreenManager(){
if(instance==null){
instance = new ActivityManager();
}
return instance;
}
//退出栈顶
public void popActivity(Activity activity){
if(activity != null){
activity.finish();
activityStack.remove(activity);
activity=null;
}
}
//获得当前栈顶
public Activity currentActivity(){
Activity activity = null;
if(!activityStack.empty()){
activity = activityStack.lastElement();
}
return activity;
}
//当前Activity推入栈中
public void pushActivity(Activity activity){
if(activityStack == null){
activityStack = new Stack();
}
activityStack.add(activity);
}
//退出所有Activity
public void popAllActivityExceptionOne(){
while(true){
Activity activity = currentActivity();
if(activity == null){
break;
}
if(activity.getClass().equals(cls)){
break;
}
popActivity(activity);
}
}
}