使用自定义的Activity栈来管理android的Activity
2011-11-08 15:14
357 查看
在进行BlackBerry程序开发的时候,BlackBerry提供了一个管理Screen的栈,用来从任何地方来关闭位于最上一层的Screen,使 用UiApplication.getUiApplication().getActiveScreen()来得到位于最上一层的Screen的实例,并 且使用UiApplication.getUiApplication().popScreen()来关闭一个Screen或关闭当前最上一层的 Screen,但是Android却未提供相应的功能,只能在一个Activity的对象里面调用finish来关闭自己,不能关闭其他的
Activity。比如我们想实现一个功能从屏幕A—>屏幕B—>屏幕C—>屏幕D,然后在在转到屏幕D之前将屏幕B和C关闭,在屏幕 B和屏幕C界面点击会退按钮都可以回退到上一个屏幕,但是在屏幕D上点击会退按钮让其回退到A,此外在一些循环跳转的界面上如果不在合适的地方将一些不需 要的屏幕关闭,那么经过多次跳转后回导致内存溢出。对此我们可以设计一个全局的Activity栈,使用这个栈来管理Activity。管理 Activity的类的定义如下:
import java.util.Stack;
import android.app.Activity;
public class ScreenManager {
private static Stack<Activity> activityStack;
private static ScreenManager instance;
private ScreenManager(){
}
public static ScreenManager getScreenManager(){
if(instance==null){
instance=new ScreenManager();
}
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();
activityStack.remove(activity);
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 cls){
while(true){
Activity activity=currentActivity();
if(activity==null){
break;
}
if(activity.getClass().equals(cls) ){
break;
}
popActivity(activity);
}
}
}
相关文章推荐
- 使用自定义的Activity栈来管理android的Activity
- 使用自定义的Activity栈来管理android的Activity
- 使用自定义的Activity栈来管理android的Activity
- 使用自定义的Activity栈来管理android的Activity
- 自定义Activity栈来管理android的Activity
- android 使用activity自定义下拉选择列表
- Android使用Theme自定义Activity进入退出动画的方法
- 使用gradle的自定义Property实现Android项目的配置和依赖统一管理
- android 中使用回调方法(适用于自定义view传值到activity、adapter传值到activity)
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- Android自定义URL使用Scheme方式唤起Activity或App
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- Android自定义URL使用Scheme方式唤起Activity或App
- 使用gradle的自定义Property实现Android项目的配置和依赖统一管理
- 使用和管理Android中Activity的切换动画(一)
- Android实现可使用自定义透明Dialog样式的Activity完整实例
- Android开发-自定义application对activity的管理与控制
- 使用和管理Android中Activity的切换动画(二)
- Android 自定义activity切换动画实现,overridePendingTransition的使用详解
- 朝花夕拾-android 自定义application 管理activity的生命周期