zoukankan      html  css  js  c++  java
  • AppManager

    package net.oschina.app;
    
    import java.util.Stack;
    
    import android.app.Activity;
    import android.content.Context;
    
    /**
     * activity堆栈式管理
     *
     * @author FireAnt(http://my.oschina.net/LittleDY)
     * @created 2014年10月30日 下午6:22:05
     *
     */
    public class AppManager {
    
        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 && !activity.isFinishing()) {
                activityStack.remove(activity);
                activity.finish();
                activity = null;
            }
        }
    
        /**
         * 结束指定类名的Activity
         */
        public void finishActivity(Class<?> cls) {
            for (Activity activity : activityStack) {
                if (activity.getClass().equals(cls)) {
                    finishActivity(activity);
                    break;
                }
            }
        }
    
        /**
         * 结束所有Activity
         */
        public void finishAllActivity() {
            for (int i = 0, size = activityStack.size(); i < size; i++) {
                if (null != activityStack.get(i)) {
                  //finishActivity方法中的activity.isFinishing()方法会导致某些activity无法销毁
                  //貌似跳转的时候最后一个activity 是finishing状态,所以没有执行
                  //内部实现不是很清楚,但是实测结果如此,使用下面代码则没有问题
                  // find by TopJohn
                  //finishActivity(activityStack.get(i));
    
                  activityStack.get(i).finish();
                  //break;
                }
            }
            activityStack.clear();
        }
    
        /**
         * 获取指定的Activity
         *
         * @author kymjs
         */
        public static Activity getActivity(Class<?> cls) {
            if (activityStack != null)
                for (Activity activity : activityStack) {
                    if (activity.getClass().equals(cls)) {
                        return activity;
                    }
                }
            return null;
        }
    
        /**
         * 退出应用程序
         */
        public void AppExit(Context context) {
            try {
                finishAllActivity();
                // 杀死该应用进程
                android.os.Process.killProcess(android.os.Process.myPid());
                System.exit(0);
            } catch (Exception e) {
            }
        }
    }
    
  • 相关阅读:
    java List转换为字符串并加入分隔符的一些方法总结
    jackson 实体转json 为NULL或者为空不参加序列化
    马云告别演讲
    Linux chmod命令
    Linux执行shell脚本的方法
    2019第36周日
    2019第36周六
    eclipse中的maven插件
    SpringBoot要点之使用Actuator监控
    eclipse隐藏的列编辑
  • 原文地址:https://www.cnblogs.com/caoxinyu/p/6647942.html
Copyright © 2011-2022 走看看