堆栈管理器

来源:互联网 发布:js隐藏数组里面的input 编辑:程序博客网 时间:2024/05/17 21:43
  1. (转:http://blog.csdn.net/vipzjyno1/article/details/25423543)
  2. public class StackManager {  
  3.     /** 
  4.      * Stack 中对应的Activity列表  (也可以写做 Stack<Activity>) 
  5.      */  
  6.     private static Stack mActivityStack;  
  7.     private static StackManager mInstance;  
  8.   
  9.     /** 
  10.      * @描述 获取栈管理工具 
  11.      * @return ActivityManager 
  12.      */  
  13.     public static StackManager getStackManager() {  
  14.         if (mInstance == null) {  
  15.             mInstance = new StackManager();  
  16.         }  
  17.         return mInstance;  
  18.     }  
  19.   
  20.     /** 
  21.      * 推出栈顶Activity 
  22.      */  
  23.     public void popActivity(Activity activity) {  
  24.         if (activity != null) {  
  25.             activity.finish();  
  26.             mActivityStack.remove(activity);  
  27.             activity = null;  
  28.         }  
  29.     }  
  30.   
  31.     /** 
  32.      * 获得当前栈顶Activity 
  33.      */  
  34.     public Activity currentActivity() {  
  35.         //lastElement()获取最后个子元素,这里是栈顶的Activity  
  36.         if(mActivityStack == null || mActivityStack.size() ==0){  
  37.             return null;  
  38.         }  
  39.         Activity activity = (Activity) mActivityStack.lastElement();  
  40.         return activity;  
  41.     }  
  42.   
  43.     /** 
  44.      * 将当前Activity推入栈中 
  45.      */  
  46.     public void pushActivity(Activity activity) {  
  47.         if (mActivityStack == null) {  
  48.             mActivityStack = new Stack();  
  49.         }  
  50.         mActivityStack.add(activity);  
  51.     }  
  52.   
  53.     /** 
  54.      * 弹出指定的clsss所在栈顶部的中所有Activity 
  55.      * @clsss : 指定的类  
  56.      */  
  57.     public void popTopActivitys(Class clsss) {  
  58.         while (true) {  
  59.             Activity activity = currentActivity();  
  60.             if (activity == null) {  
  61.                 break;  
  62.             }  
  63.             if (activity.getClass().equals(clsss)) {  
  64.                 break;  
  65.             }  
  66.             popActivity(activity);  
  67.         }  
  68.     }  
  69.       
  70.     /** 
  71.      * 弹出栈中所有Activity 
  72.      */  
  73.     public void popAllActivitys() {  
  74.         while (true) {  
  75.             Activity activity = currentActivity();  
  76.             if (activity == null) {  
  77.                 break;  
  78.             }  
  79.             popActivity(activity);  
  80.         }  
  81.     }  
  82. }  
0 0