Java 如何使双击返回关闭我的应用程序

Java 如何使双击返回关闭我的应用程序,java,android,android-studio,Java,Android,Android Studio,我有startActivity和主屏幕活动。主屏幕活动出现在startActivity之后。我想实现双击返回以关闭应用程序。我尝试了这段代码,但在应用程序关闭后,它会立即重新打开,或者只是返回startActivity @Override public void onBackPressed() { if (doubleBackToExitPressedOnce) { super.onBackPressed(); return

我有startActivity和主屏幕活动。主屏幕活动出现在startActivity之后。我想实现双击返回以关闭应用程序。我尝试了这段代码,但在应用程序关闭后,它会立即重新打开,或者只是返回startActivity

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

        this.doubleBackToExitPressedOnce = true;
        Toast.makeText(this, "Нажмите ещё раз что бы закрыть приложение", Toast.LENGTH_SHORT).show();

        new Handler().postDelayed(new Runnable() {

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

如果此代码位于某些子活动中(不在主活动中),请尝试替换:

super.onBackPressed()
与:

finishafinity()
由于根据《基本法》:

默认实现只是完成当前活动,但是您可以覆盖它来执行任何您想要的操作

调用
super.onBackPressed()
将完成当前活动,而不是整个应用程序。这可能是您的bug的来源,但我不能确定,因为您没有为我们提供更广泛的上下文—更多的代码

因此,另一方面,
finishafinity()
可能是您的解决方案。说:

完成此活动以及当前任务中紧靠其下方具有相同关联性的所有活动


这将完成所有活动。

您可以发布startActivity课程代码吗?为什么要这样做?这不是安卓的正常行为,更可能会惹恼用户。但是出现问题的原因是super.onBackPressed不会退出应用程序—它会完成一项活动。所以它会把你带回到它后面的堆栈上。如果希望堆栈中没有startActivity(因此无法返回),则需要在启动HomeActivity后对其自身调用finish()。