Java 如何覆盖onBackPressed以确保注销用户不能;“回去”;到MainActivity,并且登录的用户不能;“回去”;有意义吗?

Java 如何覆盖onBackPressed以确保注销用户不能;“回去”;到MainActivity,并且登录的用户不能;“回去”;有意义吗?,java,android,authentication,Java,Android,Authentication,背景:我有一项重要的活动和一项主要的活动。当用户尚未登录或身份验证令牌过期时,首先向用户显示SignInUserActivity。成功登录后,用户将被定向到MainActivity,或者如果在打开应用时验证令牌有效,则用户将在打开应用时被定向到MainActivity。用户可以从MainActivity注销,这将引导用户返回SignInUserActivity 1) 用户从SignInUserActivity登录。当用户在SignInUserActivity中按On Backpress时,应用程

背景:我有一项重要的活动和一项主要的活动。当用户尚未登录或身份验证令牌过期时,首先向用户显示SignInUserActivity。成功登录后,用户将被定向到MainActivity,或者如果在打开应用时验证令牌有效,则用户将在打开应用时被定向到MainActivity。用户可以从MainActivity注销,这将引导用户返回SignInUserActivity

1) 用户从SignInUserActivity登录。当用户在SignInUserActivity中按On Backpress时,应用程序应关闭(或移到后台)>

2) 在用户登录后,用户不能通过返回足够的次数或工具栏上的navigateUp按钮返回SignInUserActivity,返回时只应关闭应用程序(或将其移动到后台)。目前,我有

@Override
public void onBackPressed() {
    super.onBackPressed();
    finish();
}
在我的主要活动中

3) 如果用户从MainActivity注销,在SignInUserActivity中,onBackPressed不应将用户引导回MainActivity(由于会话已被删除,因此数据为空)。目前我处理它的方式是将用户重定向回SignInUserActivity:

public void handleRedirect(String sessionId) {
    if (sessionId == null) {
        Intent requireSignInIntent = new Intent(this, SignInUserActivity.class);
        startActivity(requireSignInIntent);
    }
}

但是它应该在backpressed时重写?

似乎您的问题可以通过启动一个新的
活动
堆栈轻松解决。当您开始
signianctivity
以及成功登录后导航到其他
活动时,只需添加此项

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

此标志应涵盖您的第一个和第二个问题。至于第三个问题,您的逻辑似乎做得很好,但我没有完全理解最后一部分。

它对您有帮助吗?