AppManager类,管理Activity和App

来源:互联网 发布:王俊煜 知乎 编辑:程序博客网 时间:2024/06/06 01:48

直接两段代码:

[java] view plain copy
  1. @Override  
  2. protected void onCreate(Bundle savedInstanceState) {  
  3.     super.onCreate(savedInstanceState);  
  4.     // 添加Activity到堆栈  
  5.     AppManager.getAppManager().addActivity(this);  
  6. }  
  7.   
  8. @Override  
  9. protected void onDestroy() {  
  10.     super.onDestroy();  
  11.     // 结束Activity&从堆栈中移除  
  12.     AppManager.getAppManager().finishActivity(this);  
  13. }  


[java] view plain copy
  1. package net.oschina.app;  
  2.   
  3. import java.util.Stack;  
  4.   
  5. import android.app.Activity;  
  6. import android.app.ActivityManager;  
  7. import android.content.Context;  
  8.   
  9. /** 
  10.  * 应用程序Activity管理类:用于Activity管理和应用程序退出 
  11.  * @author liux (http://my.oschina.net/liux) 
  12.  * @version 1.0 
  13.  * @created 2012-3-21 
  14.  */  
  15. public class AppManager {  
  16.       
  17.     private static Stack<Activity> activityStack;  
  18.     private static AppManager instance;  
  19.       
  20.     private AppManager(){}  
  21.     /** 
  22.      * 单一实例 
  23.      */  
  24.     public static AppManager getAppManager(){  
  25.         if(instance==null){  
  26.             instance=new AppManager();  
  27.         }  
  28.         return instance;  
  29.     }  
  30.     /** 
  31.      * 添加Activity到堆栈 
  32.      */  
  33.     public void addActivity(Activity activity){  
  34.         if(activityStack==null){  
  35.             activityStack=new Stack<Activity>();  
  36.         }  
  37.         activityStack.add(activity);  
  38.     }  
  39.     /** 
  40.      * 获取当前Activity(堆栈中最后一个压入的) 
  41.      */  
  42.     public Activity currentActivity(){  
  43.         Activity activity=activityStack.lastElement();  
  44.         return activity;  
  45.     }  
  46.     /** 
  47.      * 结束当前Activity(堆栈中最后一个压入的) 
  48.      */  
  49.     public void finishActivity(){  
  50.         Activity activity=activityStack.lastElement();  
  51.         finishActivity(activity);  
  52.     }  
  53.     /** 
  54.      * 结束指定的Activity 
  55.      */  
  56.     public void finishActivity(Activity activity){  
  57.         if(activity!=null){  
  58.             activityStack.remove(activity);  
  59.             activity.finish();  
  60.             activity=null;  
  61.         }  
  62.     }  
  63.     /** 
  64.      * 结束指定类名的Activity 
  65.      */  
  66.     public void finishActivity(Class<?> cls){  
  67.         for (Activity activity : activityStack) {  
  68.             if(activity.getClass().equals(cls) ){  
  69.                 finishActivity(activity);  
  70.             }  
  71.         }  
  72.     }  
  73.     /** 
  74.      * 结束所有Activity 
  75.      */  
  76.     public void finishAllActivity(){  
  77.         for (int i = 0, size = activityStack.size(); i < size; i++){  
  78.             if (null != activityStack.get(i)){  
  79.                 activityStack.get(i).finish();  
  80.             }  
  81.         }  
  82.         activityStack.clear();  
  83.     }  
  84.     /** 
  85.      * 退出应用程序 
  86.      */  
  87.     public void AppExit(Context context) {  
  88.         try {  
  89.             finishAllActivity();  
  90.             ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);  
  91.             activityMgr.restartPackage(context.getPackageName());  
  92.             System.exit(0);  
  93.         } catch (Exception e) { }  
  94.     }  
  95. }  
0 0
原创粉丝点击