小编典典

Java单击后退按钮两次以退出活动

java

我最近在许多Android应用程序和游戏中都注意到了这种模式:单击“后退”按钮以“退出”该应用程序时,Toast会出现类似“请再次单击BACK退出”的消息。

我想知道,正如我越来越经常看到的那样,这是你可以以某种方式在活动中访问的内置功能吗?我看过许多类的源代码,但似乎找不到任何东西。

当然,我可以考虑几种很容易实现相同功能的方法(最简单的方法可能是在活动中保留一个布尔值,以指示用户是否已经单击过一次……),但是我想知道这里是否已经存在某些东西了。 。

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


阅读 528

收藏
2020-03-10

共1个答案

小编典典

在Java活动中:

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().postDelayed(new Runnable() {

        @Override
        public void run() {
            doubleBackToExitPressedOnce=false;                       
        }
    }, 2000);
} 

在Kotlin活动中:

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().postDelayed(Runnable { doubleBackToExitPressedOnce = false }, 2000)
    }

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

2020-03-10