【MVP】AppManager一些有关Activity和程序退出的操作

来源:互联网 发布:金元证券软件下载 编辑:程序博客网 时间:2024/06/07 15:13

新人自我学习用,希望共同学习,共同进步

** * Created by chen on 2017/8/22. */public class AppManager {    private static Stack<Activity> activityStack;    /*    * 创建单例    * */    private volatile static AppManager instance;    private AppManager(){    }    public static AppManager getAppManager(){        if(instance ==null){            synchronized (AppManager.class){                if(instance == null){                    instance = new AppManager();                    instance.activityStack =new Stack();                }            }        }        return instance;    }    /*    添加activity到栈    * */    public void addActivity(Activity activity){        if(activityStack == null){            activityStack = new Stack<Activity>();        }        activityStack.add(activity);    }    /*    * 获取当前activity(栈中最后一个压入的)    * */    public Activity currentActivity(){        try {            Activity activity = activityStack.lastElement();            return activity;        }catch (Exception e){            return null;        }    }    /*    * 获取当前Activity的前一个Activity    * */    public  Activity preActivity(){        int index = activityStack.size()-2;        if(index < 0){            return null;        }        Activity activity = activityStack.get(index);        return activity;    }    /*    * 结束当前Activity(把栈中最后一个压入的)    * */    public  void finishActivity() {        Activity activity = activityStack.lastElement();        finishActivity(activity);    }    /*    * 结束指定的Activity    * */    private void finishActivity(Activity activity) {        if(activity != null){            activityStack.remove(activity);            activity.finish();            activity = null;        }    }    /*    * 移除指定的Activity    * */    public void removeActivity(Activity activity){        if (activity !=null){            activityStack.remove(activity);            activity = null;        }    }    /*    * 结束指定类名的activity    * */    public void finishActivity(Class<?> cls){        try {            for (Activity activity:activityStack){                if (activity.getClass().equals(cls)){                    finishActivity(activity);                }            }        }catch (Exception e){            e.printStackTrace();        }    }    /*    * 结束所有Activity    * */    public void finshAllActivity(){        for(int i=0,size = activityStack.size();i<size;i++){            if (null != activityStack.get(i)){                activityStack.get(i).finish();            }        }        activityStack.clear();    }    /**     * 返回指定的Acticity     * @param cls     */    public void returnToActivity(Class<?> cls){        while (activityStack.size() != 0)            if (activityStack.peek().getClass() == cls){                break;            }else {                finishActivity(activityStack.peek());            }    }    /**     * 是否已经打开指定的Activity     * @param cls     * @return     */    public boolean isOpenActivity(Class<?> cls){        if (activityStack != null){            for (int i=0,size = activityStack.size();i<size;i++){                if (cls == activityStack.peek().getClass()){                    return true;                }            }        }        return false;    }    /**     * 退出应用程序     * @param context     * @param isBackground  是否开启后台运行     */    public void AppExit(Context context,Boolean isBackground){        try {           finshAllActivity();            ActivityManager activityMgr = (ActivityManager) context                    .getSystemService(Context.ACTIVITY_SERVICE);            activityMgr.restartPackage(context.getPackageName());        }catch (Exception e){        }finally {            //如果有后台程序运行,请不要支持此句            if (!isBackground){                System.exit(0);            }        }    }}
原创粉丝点击