Onbackpressed 关闭应用程序登录后不关闭应用程序

Onbackpressed close app not closing app after login

我的应用程序包含 2 个主要 activity 和 1 个次要 activity(登录弹出窗口)

  1. Activity 是 PreLogin activity,其中用户有应用程序信息和一些其他内容以及用于登录的按钮。当他按下该按钮时,new activity 将作为弹出窗口启动。如果他点击返回那里,activity 将关闭,用户将返回到之前的 activity。

  2. Activity 是 PostLogin,我在那里实现了这个功能:

我的代码:

public void onBackPressed() {
    if (doubleBackToExitPressedOnce) {
        super.onBackPressed();
        finish();
        return;
    }

    this.doubleBackToExitPressedOnce = true;
    final View coordinatorLayoutView = findViewById(R.id.coordinator);

    Snackbar.make(coordinatorLayoutView, "Press again to exit.", Snackbar.LENGTH_LONG).show();
    new Handler().postDelayed(new Runnable() {


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

        }
    }, 5000);
}

此代码应该会关闭我的应用程序,但问题是按下后退按钮 2 次,显示灰色屏幕,用户需要再次单击后退按钮才能退出应用程序。

我很确定问题与我的 Prelogin activity 有某种联系,因为当我尝试 noHistory 我的 Prelogin activity onBackpressed() 非常有效,但我可以' 使用该方法,因为我需要在我的 Prelogin 上有历史记录,所以后退按钮适用于 Login Popup。

您只需使用下面的简单代码即可实现。

@Override
    public void onBackPressed() {
        if (back_pressed + 2000 > System.currentTimeMillis()) {
            //Intent intent = new Intent(Intent.ACTION_MAIN);
            //intent.addCategory(Intent.CATEGORY_HOME);
            //intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            //startActivity(intent);
            super.onBackPressed();
        } else {
            Toast.makeText(this, "Press the back button once again to close the application.", Toast.LENGTH_SHORT).show();
            back_pressed = System.currentTimeMillis();
        }
    }

这里的2000就是2 Seconds,你可以改成你喜欢的任何值。如果在 2 seconds 内再次按下后退按钮,则只有它会返回。

如果需要,您可以调用前面activity 的Intent,或者您可以删除注释的Intent 代码以返回Home 屏幕。

简单的说finish();开始后Activity(意图);在第一个 Activity!

在启动 Intent 后的第一个 activity(登录 activity)中调用 finish() 方法。