Android退出finishAll关闭所有Activity

本文探讨如何优雅地退出Android应用,重点在于处理finishAll()方法中的并发修改异常。通过理解for循环逻辑、避免ConcurrentModificationException、调整索引处理以及防止ArrayIndexOutOfBoundsException,确保应用在退出时的稳定性。
摘要由CSDN通过智能技术生成

写这边文章是因为,查看了太多网上错误的例子,因此想借此经验让大家明白优雅的退出APP的过程。

1.功能需求

  公司要开发一款android APP,要求能按系统的‘退出键’进行退出,退出键退出很简单

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_HOME) {
            Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    ActivityManager.getInstance().exitApp();
                }
            }, 500);
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
KeyEvent.KEYCODE_BACK,表示用户按了系统返回键,
return true;表示拦截了该事件,不再向下执行系统的super.onKeyDown(keyCode, event);逻辑,当然如果业务需要,可以继续执行系统逻辑。

关键在

ActivityManager.getInstance().exitApp();

我贴出代码

package com.yys.utils;

import android.app.Activity;
import android.app.Application;

import java.lang.ref.WeakReference;
import java.util.Stack;

/**
 * Activity管理类
 * <p>
 * 添加/删除 建议在{@link Application#registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks)}中统一处理
 * (此方法比在BaseActivity中处理要好)
 */
public class ActivityManager {
    private static Stack<WeakReference<Activity>> mActStack = new Stack<>();

    private static class Singleton {
        private static final ActivityManager INSTANCE = new ActivityM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值