【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); } } }}
阅读全文
0 0
- 【MVP】AppManager一些有关Activity和程序退出的操作
- AppManager 用于管理activity和退出机制
- MVP项目研究——AppManager融合Dagger2和androidEventbus管理Activity的生命周期
- AppManager类,管理Activity和App
- 【转】AppManager类,管理Activity和App
- AppManager类,管理Activity和App
- AppManager类,管理Activity和App
- Activity有关的一些问题
- AppManager管理Activity
- AppManager Activity管理类
- Activity管理工具类AppManager
- Activity管理工具类AppManager
- Activity管理工具类AppManager
- 有关HBase的一些操作
- 有关XML的一些操作
- 有关字符串的一些操作
- 解决有关退出Activity不彻底的方法
- 解决有关退出Activity不彻底的方法
- msyql 查看行锁情状况
- 【Spark2.0源码学习】-3.Endpoint模型介绍
- 这么多开源框架,该用哪个好?
- 组合模式
- Linux基本操作命令
- 【MVP】AppManager一些有关Activity和程序退出的操作
- python struct笔记
- 10023---分布式系统理论基础
- Java Web 项目运行报错之——Compilation error.......ClassFormatException
- 函数基础
- JavaScript中的 == 和 === 的区别
- 文件IO与标准IO
- Kprobe添加linux内核钩子定位bug
- 【Android】圆角Button的实现