Android应用开发之Android 结束所有Activity通用方法
凌雪 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
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved