欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

【Android工具类】Activity管理工具类AppManager,androidappmanager,转载请注明出处:http

来源: javaer 分享于  点击 4166 次 点评:102

【Android工具类】Activity管理工具类AppManager,androidappmanager,转载请注明出处:http


转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992```java import java.util.Stack;

import android.app.Activity;  import android.app.ActivityManager;  import android.content.Context;/**  *   * @ClassName: com.qust.myutils.AppManager  * @Description: Activity管理类:用于管理Activity和退出程序  * @author zhaokaiqiang  * @date 2014-11-20 下午4:53:33  *   */  public class AppManager {    // Activity栈      private static Stack<Activity> activityStack;      // 单例模式      private static AppManager instance;    private AppManager() {      }    /**      * 单一实例      */      public static AppManager getAppManager() {          if (instance == null) {              instance = new AppManager();          }          return instance;      }    /**      * 添加Activity到堆栈      */      public void addActivity(Activity activity) {          if (activityStack == null) {              activityStack = new Stack<Activity>();          }          activityStack.add(activity);      }    /**      * 获取当前Activity(堆栈中最后一个压入的)      */      public Activity currentActivity() {          Activity activity = activityStack.lastElement();          return activity;      }    /**      * 结束当前Activity(堆栈中最后一个压入的)      */      public void finishActivity() {          Activity activity = activityStack.lastElement();          finishActivity(activity);      }    /**      * 结束指定的Activity      */      public void finishActivity(Activity activity) {          if (activity != null) {              activityStack.remove(activity);              activity.finish();              activity = null;          }      }    /**      * 结束指定类名的Activity      */      public void finishActivity(Class<?> cls) {          for (Activity activity : activityStack) {              if (activity.getClass().equals(cls)) {                  finishActivity(activity);              }          }      }    /**      * 结束所有Activity      */      public void finishAllActivity() {          for (int i = 0; i < activityStack.size(); i++) {              if (null != activityStack.get(i)) {                  activityStack.get(i).finish();              }          }          activityStack.clear();      }    /**      * 退出应用程序      */      public void AppExit(Context context) {          try {              finishAllActivity();              ActivityManager activityMgr = (ActivityManager) context                      .getSystemService(Context.ACTIVITY_SERVICE);              activityMgr.killBackgroundProcesses(context.getPackageName());              System.exit(0);          } catch (Exception e) {          }      }  }
 这个类是从oschina的android客户端开源项目中抽取出来的,主要用于Activity的管理和应用程序的退出。     如果我们在退出程序的时候,调用AppManager.AppExit(Context)就可以将栈中所有的Activity实例销毁。      如果我们要更加方便的是用这个管理类,推荐创建一个Activity的基类,并在onCreate和onDestory方法里面调用对应的方法,这样我们就不需要单独在某个Activity里面添加重复逻辑,精简代码,比如像下面这样 ```java    /**          * 对context进行初始化,并将当前的Activity加入到堆栈中,便于管理          */          @Override          protected void onCreate(Bundle savedInstanceState) {              super.onCreate(savedInstanceState);              // 添加Activity到堆栈              AppManager.getAppManager().addActivity(this);          }          @Override          protected void onDestroy() {              super.onDestroy();              // 结束Activity&amp;从堆栈中移除              AppManager.getAppManager().finishActivity(this);          }  
相关栏目:

用户点评