我们要在进行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 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();
}
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);
}
}
}


 Stack这个就是我们自定义的activity栈,这个写好后,我们就开始一步一步的来实现我们要跳转的界面了。用了这个Stack就给我们节省很多的资源和时间,有了这个我们页就不用那么麻烦了               
                 从上面的代码我们知道了在每个方法的下面都会用到判断,这个是非常主要的,因为当我们判断完事了,才可以执行下面的代码,就像是我们要跳转界面一样,我们这个跳转的话,是必须你同意才能跳转的,如果没有判断的话,当你到达这个界面的时候,就不会停止在这个界面,而是再跳到下一个界面,这样就会出现bug。所以大家一定要记住这个。

更多相关文章

  1. Android(安卓)通过 AccessibilityService 来实现微信自动点赞功
  2. 关于android设备的分辨率
  3. Android开机界面logo
  4. android 双击图片放大,再双击缩小效果 【安卓进化九】
  5. android 屏幕旋转
  6. 自定义Dialog宽度设定
  7. Android(安卓)使用SharedPreferrences储存密码登录界面记住密码
  8. Android(安卓)studio登录界面
  9. 解决Android手机 屏幕横竖屏切换

随机推荐

  1. Android UI设计--半透明效果对话框及acti
  2. android 横竖屏限制如何配置
  3. Android Studio 错误 Duplicate files co
  4. Android Gradle 指南
  5. Android -- adb devices找不到设备的解决
  6. Android横竖屏总结(转)
  7. android.net.wifi Kotlin |Java
  8. Android中使用XmlPullParse解析xml文件
  9. 亲试,Windows平台上使用Qt5.2.1编写Androi
  10. 【Android Api 翻译1】Android Texting(2)T