android activity 管理工具类
2018-07-20 来源:open-open
import java.util.Stack; import android.app.Activity; import android.app.ActivityManager; import android.content.Context; public class AppManager { private static Stack<Activity> activityStack; private static AppManager instance; private AppManager(){ } /** * 功能描述:获取AppManager对象,单例模式 * @return */ public static AppManager getAppManager(){ if (instance == null){ instance = new AppManager(); } return instance; } /** * 功能描述: 添加Activity到堆栈 * @param activity */ public void addActivity(Activity activity){ if (activityStack == null){ activityStack = new Stack<Activity>(); } activityStack.add(activity); } /** * 功能描述: 获取当前Activity(堆栈中最后一个压入的) * @return */ public Activity currentActivity(){ Activity activity = activityStack.lastElement(); return activity; } /** * 功能描述: 结束当前Activity(堆栈中最后一个压入的) */ public void finishActivity(){ Activity activity = activityStack.lastElement(); finishActivity(activity); } /** * 功能描述: 结束指定的Activity * @param activity */ public void finishActivity(Activity activity){ if (activity != null){ activityStack.remove(activity); activity.finish(); activity = null; } } /** * 功能描述: 移除指定的Activity * @param activity */ public void removeActivity(Activity activity){ if (activity != null){ activityStack.remove(activity); activity = null; } } /** * 功能描述: 结束指定类名的Activity * @param cls */ public static void finishActivity(Class<?> cls){ try { Stack<Activity> activityStackTemp = new Stack<Activity>(); for (Activity activity : activityStack){ if (activity.getClass().equals(cls)){ //判断activity是否已经消失,如果未消失,则消失activity,如果栈里面有activity,但是已经消失了,则从栈里面 //移除该对象,为了防止多页面跳时,部分activity被错误加入. if(!activity.isFinishing()){ activityStackTemp.add(activity); activity.finish(); } } } //在list集合遍历的时候,不能删除list中的元素,否则会报java.util.ConcurrentModificationException异常 activityStack.removeAll(activityStackTemp); // 在这里捕获空,当程序退出,又接收推送,点击推送,这个方法报空 } catch (Exception e) { e.printStackTrace(); } } /** * 功能描述: 结束所有Activity */ public static void finishAllActivity(){ //这里可能会报数组越界的错误提前异常捕获 Stack<Activity> activityStackTemp = new Stack<Activity>(); activityStackTemp.addAll(activityStack); try { for (int i = 0, size = activityStackTemp.size(); i < size; i++){ if (null != activityStackTemp.get(i)){ if(!activityStackTemp.get(i).isFinishing()){ activityStackTemp.get(i).finish(); } } } activityStack.clear(); } catch (Exception e) { e.printStackTrace(); } } /** * 功能描述: 退出应用程序 * @param context 上下文 * @param isBackground 是否开启后台运行 */ public void AppExit(Context context, Boolean isBackground){ try{ finishAllActivity(); ActivityManager activityMgr = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); activityMgr.killBackgroundProcesses(context.getPackageName()); // android.os.Process.killProcess(android.os.Process.myPid()); } catch (Exception e){ e.printStackTrace(); } finally{ // 注意,如果您有后台程序运行,请不要支持此句子 if (!isBackground){ // System.exit(0); // 程序在下载时开启了下载service,此处不要杀掉任何进程 } } } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
上一篇:ios后台更新和下载
下一篇:php提取图片的主要颜色
最新资讯
热门推荐