背景:我有一个 SignInUserActivity 和一个 MainActivity。当用户尚未登录或身份验证 token 过期时,首先向用户呈现 SignInUserActivity。成功登录后,用户将被定向到 MainActivity,或者如果身份验证 token 在打开应用程序时有效,则用户将在用户打开应用程序时定向到 MainActivity。用户可以从 MainActivity 注销,这会将用户引导回 SignInUserActivity。
1) 用户从 SignInUserActivity 登录。当用户在 SignInUserActivity 中按下 onBackPressed 时,应用程序应该关闭(或移至后台)>
2) 用户登录后,用户不应通过 onBackPressed 足够多次或工具栏上的 navigateUp 按钮返回 SignInUserActivity,onBackPressed 应仅关闭应用程序(或将其移至后台)。目前,我有
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
在我的 MainActivity 中
3) 如果用户从 MainActivity 注销,在 SignInUserActivity 中,onBackPressed 不应将用户引导回 MainActivity(由于 session 已被删除,因此数据为空)。目前我处理它的方式是将用户重定向回 SignInUserActivity:
public void handleRedirect(String sessionId) {
if (sessionId == null) {
Intent requireSignInIntent = new Intent(this, SignInUserActivity.class);
startActivity(requireSignInIntent);
}
}
但它应该覆盖 onBackPressed?
最佳答案
看来您的问题可以通过启动一个新的 Activity
堆栈轻松解决。只需在启动 SignInActivity
以及在成功登录后导航到其他 Activity
时添加此内容
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
这个标志应该涵盖你的第一个和第二个问题。至于第三个问题,看起来你的逻辑很好,但我不太明白最后一部分。
关于java - 如何覆盖 onBackPressed 以确保注销用户不能通过 "go back"访问 MainActivity,而登录用户不能通过 "go back"访问 SignInActivity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48413263/