app管理類

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import java.util.Stack;

public class AppManager {
   private static Stack<Activity> mActivityStack;
   private static AppManager mAppManager;

   private AppManager() {
   }

   /**
    * 單一實例
    */
   public static AppManager getInstance() {
      if (mAppManager == null) {
         mAppManager = new AppManager();
      }
      return mAppManager;
   }

   /**
    * 添加Activity到堆棧
    */
   public void addActivity(Activity activity) {
      if (mActivityStack == null) {
         mActivityStack = new Stack<Activity>();
      }
      mActivityStack.add(activity);
   }

   /**
    * 獲取棧頂Activity(堆棧中最後一個壓入的)
    */
   public Activity getTopActivity() {
      Activity activity = mActivityStack.lastElement();
      return activity;
   }

   /**
    * 結束棧頂Activity(堆棧中最後一個壓入的)
    */
   public void killTopActivity() {
      Activity activity = mActivityStack.lastElement();
      killActivity(activity);
   }

   /**
    * 結束指定的Activity
    */
   public void killActivity(Activity activity) {
      if (activity != null) {
         mActivityStack.remove(activity);
         activity.finish();
         activity = null;
      }
   }

   /**
    * 結束指定類名的Activity
    */
   public void killActivity(Class<?> cls) {
      for (Activity activity : mActivityStack) {
         if (activity.getClass().equals(cls)) {
            killActivity(activity);
         }
      }
   }

   /**
    * 結束所有Activity
    */
   public void killAllActivity() {
      for (int i = 0, size = mActivityStack.size(); i < size; i++) {
         if (null != mActivityStack.get(i)) {
            mActivityStack.get(i).finish();
         }
      }
      mActivityStack.clear();
   }

   /**
    * 退出應用程序
    *   結束整個App,包括service等其它Activity組件。要注意加上權限
    * <uses-permission Android:name=\"android.permission.RESTART_PACKAGES\"></uses-permission>
    * 
    * 總結:
    finish():結束當前Activity,不會立即釋放內存。遵循android內存管理機制。
    exit():結束當前組件如Activity,並立即釋放當前Activity所佔資源。
    killProcess():結束當前組件如Activity,並立即釋放當前Activity所佔資源。
    restartPackage():結束整個App,包括service等其它Activity組件。
    */
   public void AppExit(Context context) {
      try {
         killAllActivity();
         ActivityManager activityMgr = (ActivityManager) context
               .getSystemService(Context.ACTIVITY_SERVICE);
         activityMgr.restartPackage(context.getPackageName());
         System.exit(0);
      } catch (Exception e) {
      }
   }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章