You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于使用CountDownTimer实现onBackPressed功能的问题求助

使用CountDownTimer实现onBackPressed双击退出功能方案

实现逻辑

通过CountDownTimer控制2秒的返回键响应窗口,首次点击返回键弹出提示,若2秒内再次点击返回则退出应用,超时后重置点击状态。

Kotlin 实现代码

1. 全局变量声明

在Activity类内定义两个全局变量:

// 标记是否已经点击过一次返回键
private var isBackPressedOnce = false
// 倒计时器实例
private lateinit var backPressTimer: CountDownTimer

2. 初始化倒计时器

在onCreate方法中初始化CountDownTimer,设置总时长为2000毫秒(2秒):

backPressTimer = object : CountDownTimer(2000, 1000) {
    override fun onTick(millisUntilFinished: Long) {
        // 倒计时过程无需额外处理
    }

    override fun onFinish() {
        // 倒计时结束,重置点击标记
        isBackPressedOnce = false
    }
}

3. 重写onBackPressed方法

override fun onBackPressed() {
    if (isBackPressedOnce) {
        // 第二次点击返回,取消计时器后执行退出逻辑
        backPressTimer.cancel()
        super.onBackPressed()
        return
    }
    // 首次点击返回,更新标记、弹出提示、启动倒计时
    isBackPressedOnce = true
    Toast.makeText(this, "再按一次退出应用", Toast.LENGTH_SHORT).show()
    backPressTimer.start()
}

4. 避免内存泄漏

在onDestroy生命周期中主动取消计时器:

override fun onDestroy() {
    super.onDestroy()
    if (::backPressTimer.isInitialized) {
        backPressTimer.cancel()
    }
}

Java 实现代码

1. 全局变量声明

private boolean isBackPressedOnce = false;
private CountDownTimer backPressTimer;

2. 初始化倒计时器

在onCreate方法中初始化:

backPressTimer = new CountDownTimer(2000, 1000) {
    @Override
    public void onTick(long millisUntilFinished) {
    }

    @Override
    public void onFinish() {
        isBackPressedOnce = false;
    }
};

3. 重写onBackPressed方法

@Override
public void onBackPressed() {
    if (isBackPressedOnce) {
        backPressTimer.cancel();
        super.onBackPressed();
        return;
    }
    isBackPressedOnce = true;
    Toast.makeText(this, "再按一次退出应用", Toast.LENGTH_SHORT).show();
    backPressTimer.start();
}

4. 销毁时取消计时器

@Override
protected void onDestroy() {
    super.onDestroy();
    if (backPressTimer != null) {
        backPressTimer.cancel();
    }
}

内容的提问来源于stack exchange,提问作者Muhammad Abdullah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:45:04