阻止用户返回Android中之前的许多活动

时间:2016-11-15 11:27:29

标签: android android-activity

我有一个包含3项活动的Android应用。

活动1:

- 按钮注册1

- 按钮注册2

活动2:

- 按钮CreateAccount

活动3:

流程如下:

活动_______ UserAction ____________结果

1 ____________点击SignUp1____________Move to Act2

2 ____________点击CreateAccount_____Move to Act3

3

我想知道的是,当我进入活动3时,如何阻止用户返回所有以前的活动,而不仅仅是前一个活动(activity2)。

我环顾四周,人们总是建议在Activity2中的startActivity()之后调用finish()。但这不会起作用,因为android会将用户引导回activity1。

除此之外,在Activity1中,我不想在startActivity()之后调用finish(),因为我想让用户从Activity2返回到Activity1(比如,他们想要使用SignUp2)。

总而言之,只有当用户到达Activity3时,才能阻止他们返回任何其他先前的活动。

我如何实现这一目标?

4 个答案:

答案 0 :(得分:4)

您可以尝试将此标记添加到Activity3 intent:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_A‌​CTIVITY_NEW_TASK);

这应该强制清除Activity backstack

答案 1 :(得分:1)

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

使用此功能,您可以准确地告诉android在后退的情况下该怎么做。

如果您可以根据自己的要求覆盖onPause和onDestroy方法,也是个好主意,请通过android生命周期以更清晰地了解此

答案 2 :(得分:1)

如果您只是担心使用设备的后退按钮在活动之间导航,那么考虑到所呈现的限制,您应该能够通过覆盖Activity的{​​{3}}来实现您想要的效果。方法。确保实现为空,如下所示:

@Override public void onBackPressed() { /* Empty */ }

这将阻止Android完成活动的onBackPressed()的标准实施。

答案 3 :(得分:1)

使用以下标志开始您的活动:

(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK)