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

求助:如何在双击返回键退出App后关闭Toast提示?

解决双击返回退出App后Toast仍显示的问题

嘿,这个小坑我之前踩过!核心原因其实是Toast属于系统级别的提示组件,哪怕你的App进程已经被销毁,它还是会按照设定的时长继续显示。不过咱们只需要对现有代码做几个简单改动就能搞定:

方案:复用Toast实例并主动取消

首先,在你的Activity类中声明一个全局的Toast成员变量,用来保存退出提示的Toast实例:

private Toast exitToast;

然后修改onBackPressed()方法,在退出前主动取消Toast,同时复用实例避免重复创建:

@Override
public void onBackPressed() {
    long currentTime = System.currentTimeMillis();
    if (back_pressed + 2000 > currentTime) {
        // 双击退出时,先取消正在显示的Toast
        if (exitToast != null) {
            exitToast.cancel();
        }
        super.onBackPressed();
    } else {
        // 复用Toast实例,避免重复创建
        if (exitToast == null) {
            exitToast = Toast.makeText(getBaseContext(), "Нажмите еще раз для выхода", Toast.LENGTH_SHORT);
        } else {
            // 更新文本和时长,防止复用旧状态
            exitToast.setText("Нажмите еще раз для выхода");
            exitToast.setDuration(Toast.LENGTH_SHORT);
        }
        exitToast.show();
    }
    back_pressed = currentTime;
}

为什么这个方案有效?

  • 当用户触发双击退出时,我们调用exitToast.cancel()直接终止Toast的显示,系统就不会再继续展示这个提示了。
  • 复用Toast实例不仅能解决当前问题,还能避免频繁创建Toast带来的性能损耗,同时防止多次点击时出现多个Toast叠加的情况。

内容的提问来源于stack exchange,提问作者Bitlejuce Do

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:08:57