java - 单击两次后退按钮以退出 Activity

我最近在很多 Android 应用和游戏中都注意到了这种模式:当单击返回按钮“退出”应用程序时,Toast 会出现类似于“请点击再次返回退出”。

我想知道,随着我越来越频繁地看到它,这是您可以在 Activity 中以某种方式访问​​的内置功能吗?我查看了许多类的源代码,但似乎找不到任何相关内容。

当然,我可以考虑几种方法来很容易地实现相同的功能(最简单的可能是在 Activity 中保留一个 boolean 值,指示用户是否已经点击过一次......)但我想知道是否有东西已经在这里了。

编辑:正如@LAS_VEGAS 提到的,我的意思并不是传统意义上的“退出”。 (即终止)我的意思是“回到应用程序启动 Activity 启动之前打开的任何内容”,如果这有意义的话:)

最佳答案

In Java Activity:

boolean doubleBackToExitPressedOnce = false;

@Override
public void onBackPressed() {
    if (doubleBackToExitPressedOnce) {
        super.onBackPressed();
        return;
    }
        
    this.doubleBackToExitPressedOnce = true;
    Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
        
    new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
        
        @Override
        public void run() {
            doubleBackToExitPressedOnce=false;                       
        }
    }, 2000);
} 

In Kotlin Activity:

private var doubleBackToExitPressedOnce = false
override fun onBackPressed() {
        if (doubleBackToExitPressedOnce) {
            super.onBackPressed()
            return
        }

        this.doubleBackToExitPressedOnce = true
        Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show()

        Handler(Looper.getMainLooper()).postDelayed(Runnable { doubleBackToExitPressedOnce = false }, 2000)
    }

我认为这个处理程序有助于在 2 秒后重置变量。

https://stackoverflow.com/questions/8430805/

相关文章:

java - 使用 appcompat v7 更改 EditText 底线颜色

java - Java中的静态 block

java - 在 Java 中检查字符串是否为空或 null

java - Java 中如何使用匿名内部类?

Java - 通过 POST 方法轻松发送 HTTP 参数

java - 如何在 Java 中获取用户输入?

java - 如何使用 LocalDateTime 解析/格式化日期? (Java 8)

java - 当 Javadoc 标记不完整时,Maven 无法在 Java 8 中运行

java - 使模板更容易的 JSP 技巧?

java - Java 中最接近函数指针的替代品是什么?