凌雪
2018-11-29
来源 :网络
阅读 1028
评论 0
摘要:本文将带你了解Android应用开发之Android 结束所有Activity通用方法,希望本文对大家学Android有所帮助。
本文将带你了解Android应用开发之Android 结束所有Activity通用方法,希望本文对大家学Android有所帮助。
问题描述
做Android项目,退出程序时,有时不能退出所有的activity,这时我们就需要在退出时,关闭所有的activity。
自定义一个Activity 栈(通用方法)。利用一个单例模式的Activity栈来存放并管理所有Activity。并提供退出所有Activity的方法。
1.自定义一个Activity 栈方法(通用方法)
package com.project.test; import android.app.Activity; import java.util.LinkedList;import java.util.List; /** * Author:AND * Time:2018/3/16. * Email:2911743255@qq.com * Description:用于处理退出程序时可以退出所有的activity,而编写的通用类 * Detail: */ public class ActivityManager { private List activityList = new LinkedList(); private static ActivityManager instance; private ActivityManager() { } /** * 单例模式中获取唯一的MyApplication实例 * * @return */ public static ActivityManager getInstance() { if (null == instance) { instance = new ActivityManager(); } return instance; } /** * 添加Activity到容器中 * * @param activity */ public void addActivity(Activity activity) { activityList.add(activity); } /** * 移除一个activity * * @param activity */ public void deleteActivity(Activity activity) { if (activityList != null && activityList.size() > 0) { if (activity != null) { activity.finish(); activityList.remove(activity); activity = null; } } } /** * 遍历所有Activity并finish */ public void exit() { for (Activity activity : activityList) { activity.finish(); } System.exit(0); }}</activity></activity>
2.更加全面的堆栈管理类
/** * Author:AND * Time:2018/3/16. * Email:2911743255@qq.com * Description: activity堆栈管理 * Detail: */ public class ActivityStack{ private static ActivityStack mSingleInstance; private Stack mActicityStack; private ActivityStack() { mActicityStack = new Stack(); } public static ActivityStack getInstance() { if (null == mSingleInstance) { mSingleInstance = new ActivityStack(); } return mSingleInstance; } public Stack getStack() { return mActicityStack; } /** * 入栈 * * @author blue */ public void addActivity(Activity activity) { mActicityStack.push(activity); } /** * 出栈 * * @author blue */ public void removeActivity(Activity activity) { mActicityStack.remove(activity); } /** * 彻底退出 * * @author blue */ public void finishAllActivity() { Activity activity; while (!mActicityStack.empty()) { activity = mActicityStack.pop(); if (activity != null) activity.finish(); } } /** * finish指定的activity * * @author blue */ public boolean finishActivity(Class<!--? extends Activity--> actCls) { Activity act = findActivityByClass(actCls); if (null != act && !act.isFinishing()) { act.finish(); return true; } return false; } public Activity findActivityByClass(Class<!--? extends Activity--> actCls) { Activity aActivity = null; Iterator itr = mActicityStack.iterator(); while (itr.hasNext()) { aActivity = itr.next(); if (null != aActivity && aActivity.getClass().getName().equals(actCls.getName()) && !aActivity.isFinishing()) { break; } aActivity = null; } return aActivity; } /** * finish指定的activity之上的所有activity * * @author blue */ public boolean finishToActivity(Class<!--? extends Activity--> actCls, boolean isIncludeSelf) { List buf = new ArrayList(); int size = mActicityStack.size(); Activity activity = null; for (int i = size - 1; i >= 0; i--) { activity = mActicityStack.get(i); if (activity.getClass().isAssignableFrom(actCls)) { for (Activity a : buf) { a.finish(); } return true; } else if (i == size - 1 && isIncludeSelf) { buf.add(activity); } else if (i != size - 1) { buf.add(activity); } } return false; }}</activity></activity></activity></activity></activity></activity>
3.使用方法
在onCreate()方法里面加上:
ActivityManager.getInstance().addActivity(this); 在onDestroy()方法里面加上:
ActivityManager.getInstance().deleteActivity(this); 退出时调用:
ActivityManager.getInstance().exit();
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号