在进行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);           }       }   }  


更多相关文章

  1. [学习记录]旋转屏幕禁止重新调用oncreat
  2. android 输入法框梳理
  3. Android(安卓)Layout之一:FrameLayout
  4. android软键盘不覆盖屏幕方法
  5. android 定时任务 隔一段时间执行 开启 关闭
  6. Android(安卓)解屏幕锁与点亮屏幕
  7. 仿抖音短视频APP源码,android获取屏幕尺寸,像素
  8. HockeyApp环境搭建
  9. Android(安卓)快速掌握Activity生命周期

随机推荐

  1. [android] android下创建一个sqlite数据
  2. Service与Android系统实现(1)-- 应用程序里
  3. Android(安卓)Studio 首次创建工程下载Gr
  4. Android第一个JNI程序
  5. Android——《Android第一行代码》中使用
  6. Android(安卓)Framework Display/Framewo
  7. listView的item中有checkbox,导致setOnIte
  8. EditText弹出软件盘时不进行全屏
  9. Android之基于BaseAdapter和SimpleAdapte
  10. 集成第三方库到android程序方法