即使清除活动堆栈后,后退按钮也会重新启动previus活动

时间:2015-08-08 21:54:19

标签: android android-lifecycle activity-lifecycle onbackpressed

我正在创建一个用户可以通过单击注销按钮注销的应用程序。在注销之前,用户在Activty A中,然后他点击导航抽屉中的ogout按钮,这将他带到活动B(登录屏幕活动)。现在,如果我单击后退按钮,即使我通过以下代码清除活动堆栈,活动A也会重新出现,

Intent intent = new Intent(curr_context, Activity_B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
finish();

同样在活动B(登录活动)中,我有以下代码,

public void onBackPressed() {
        if (backPressedToExitOnce) {
            super.onBackPressed();
        } else {
            this.backPressedToExitOnce = true;
            Toast.makeText(curr_context, "Press again to exit", Toast.LENGTH_LONG).show();
            new Handler().postDelayed(new Runnable() {

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

我真的很不知道我错在哪里。任何帮助,将不胜感激。在此先感谢!!

4 个答案:

答案 0 :(得分:1)

只需使用

即可
finish();

我认为这样做会有所帮助 我有同样的问题 告诉我它是否有效

答案 1 :(得分:1)

当您从活动B开始活动A时,您是否在StartActivity之后调用了“finish()”

ActivityB中的示例:

Intent intentActivityA= new Intent(getApplicationContext(),ActivityA.class);    
startActivity(intentActivityA);
finish();

这将在启动活动A后立即终止ActivityB,当您使用ActivityA的后退按钮时,它应该在ActivityB已经完成时自动终止应用程序。

答案 2 :(得分:1)

启动Activty_Afinish();致电Activity_B 您在意图中设置的标志会为B活动创建一个新任务,但不要为您关闭A.

答案 3 :(得分:1)

您可以在活动A:

中添加此内容
function decodeDate(s) {
  parts = s.substr(4).split('/');
  return parseInt(parts[0], 10) * 40 + parseInt(parts[1], 10);
}

通过这种方式,当您单击后退按钮时,它将带您进入启动器而不是活动B