停止活动并重新启动它(android)

时间:2012-09-05 18:42:27

标签: android android-activity restart

我的应用程序上有一个登录屏幕,截至目前,您可以按后退按钮返回登录屏幕。我不希望这种情况发生。

用户登录后,应用应停止登录活动,以便用户无法返回。在菜单屏幕上,我有一个注销按钮,我想用它在已经停止后重新启动登录活动。

我一直在寻找和测试一个小时左右,我找不到答案。

5 个答案:

答案 0 :(得分:1)

manifest for your login activity中设置noHistory = true。这可以防止活动存储在后台堆栈中。

答案 1 :(得分:0)

成功登录后,您可以拨打Actvity.finish()

要重新启动登录活动,请使用Activity.startActivity(intent)

答案 2 :(得分:0)

尝试:

登录成功登录后,在启动下一个活动后调用活动上的finish()。这将有效地破坏登录活动并将其从活动后台堆栈中删除(因此无法再导航它)。类似的东西:

onLoginComplete(){
    startActivity(new Intent(this, NextActivity.class));
    finish();
}

或者,在登录活动的onResume中检查登录状态,如果为true,则结束。这样,无论何时用户参与此活动,如果他们已经登录,它将被关闭(并且他们将永远不会真正看到它)。例如:

@Override
public void onResume(){
    super.onResume();
    if(isLoggedIn())
        finish();
}

答案 3 :(得分:0)

当您成功登录时离开登录屏幕时,请拨打finish()这将从堆栈中移除您的活动。

您的退出按钮应该重新调用登录页面,如下所示:

Intent intent = new Intent(TheCurrentActivity.this, YourLoginScreen.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();

这将加载登录屏幕并清除当前活动堆栈,确保您在注销后无法返回。

答案 4 :(得分:0)

如果您不希望用户能够返回登录活动,只需将其从最近的堆栈中排除,方法是添加到应用程序清单android:excludeFromRecents attribure中的活动声明,如下所示:

<activity android:name=".Login" android:excludeFromRecents="true"></activity>

然后,一旦您的登录活动完成任务,您(很可能)会转到您应用的下一个活动。一旦你致电startActivity()新的,只需致电finish();完成登录活动:

...
startActivity( intentToLaunchNextActivity );
finish();