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) {
            }
        }
    }
    
  • 相关阅读:
    hadoop-2.7.3安装kafka_2.11-2.1.0
    HBase数据快速导入之ImportTsv&Bulkload
    hbase shell 基本操作
    SQLplus命令中删除键和翻页键不能用的问题
    SQL*Loader 的使用sqlldr和sqluldr2方法详解
    python连接oracle导出数据文件
    python零碎知识点一
    用Python输出一个Fibonacci数列
    问题总结——window平台下gruntower安装后无法运行的问题
    JavaScript学习笔记——浅拷贝、深拷贝
  • 原文地址:https://www.cnblogs.com/caoxinyu/p/6647942.html
Copyright © 2011-2022 走看看