应用程序返回按两次注销 - 无法正常工作

App Back Press Twice to Log Out - Not Working Properly

我有点奇怪,我不太明白。

当我通过导航菜单注销我的应用程序时,它会将我带回登录屏幕。然后我将其设置为当用户按两次后退按钮时,它应该完全关闭应用程序。我已经让 toast 在按下一次后出现,说用户需要按下两次,但这是我的问题。

当我按两次后退时,屏幕清除但登录屏幕再次弹出。在框中显示我最后的登录详细信息。然后,如果我再按两次,它会完全关闭应用程序。我需要尝试弄清楚为什么它不会在前两次按下后退按钮时关闭应用程序。

下面是我使用的代码:

public void onBackPressed() {
    //moveTaskToBack(true);
    if (!isUserClickedBackButton){
        Toast.makeText(this, "Press back again to exit", Toast.LENGTH_SHORT).show();
        isUserClickedBackButton = true;
    } else {
        System.exit(0); // exits right out of app
        super.onBackPressed();

    }
}

我试过不使用 'super.onBackPressed',我试过单独使用它。我试过添加 'finish()' 或单独使用它。我不知所措。有人有什么想法吗?

如果有任何不同,我正在使用 Firebase 进行身份验证。

提前致谢。

您可以使用:

super.onBackPressed();

并将 AndroidManifest.xml 添加到登录 activity 标签中:

android:noHistory="true"

如果你愿意,你可以在不使用 android 清单中的历史记录的情况下做到这一点...

//Use this as class variable..
boolean doublePressedBackExit = false;   


@Override
public void onBackPressed() {
    if (doublePressedBackExit) {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_HOME);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        finish();
        System.exit(0);
        return;
    }
    this.doublePressedBackExit = true;
    Toast.makeText(getApplicationContext(), "Press again to exit..", Toast.LENGTH_SHORT).show();
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            doublePressedBackExit = false;
        }
    }, 2000);
}