Android 登录或注册后按Back键禁用

Android 登录或注册后按Back键禁用,android,Android,因此,我有一个应用程序,我需要做一个登录和注册。两者都对API进行调用,响应返回一个唯一的令牌。我计划将此令牌存储在共享首选项中,并在注销时将其清除。我的问题是如何处理登录或注册后的背压?一旦用户登录,如果他按下后退按钮,我就不想回到登录/注册屏幕。一旦登录或注册成功,我就不想再使用它 finish()要销毁登录或注册活动正如我的朋友所说,成功登录后,您应该通过调用finish()方法完成此活动,然后启动新活动,或者启动新活动,然后完成登录活动,没有什么不同, 只需记住通过调用finish()完

因此,我有一个应用程序,我需要做一个登录和注册。两者都对API进行调用,响应返回一个唯一的令牌。我计划将此令牌存储在共享首选项中,并在注销时将其清除。我的问题是如何处理登录或注册后的背压?一旦用户登录,如果他按下后退按钮,我就不想回到登录/注册屏幕。

一旦登录或注册成功,我就不想再使用它
finish()
要销毁登录或注册活动

正如我的朋友所说,成功登录后,您应该通过调用finish()方法完成此活动,然后启动新活动,或者启动新活动,然后完成登录活动,没有什么不同,

只需记住通过调用
finish()完成登录活动

您应该创建一个类来存储这种会话信息。 如果用户(或操作系统本身)终止应用程序进程,将其存储在
SharedReferences
中可能会导致该令牌不会被删除

无论如何,如果您想这样做,您只需覆盖
活动的
方法的
onBackPressed

@Override
public void onBackPressed() {
    // Here you can do whatever you want. Leave it blank if you
    // want not to do anything, or show a Logout popup... whatever you need
    // If you want to close all activities, call finishAffinity()
}
在第二个活动(登录或注册后进入的活动)中,覆盖
onBackPressed
方法,并在其中实现您自己的逻辑。您可以选择在按下back时不执行任何操作,可能同时退出应用程序。这取决于你

@Override
    public void onBackPressed() {
         // Leave empty if you want nothing to happen, or do something else if you wish

    }

您可以从登录或注册屏幕开始下一个活动,并使用意图标志清除活动堆栈,现在当用户按下后退键时,将不会显示当前活动之前的任何活动。您可以在此处阅读有关意向标志的更多信息:

您可以调用
finish()
来销毁活动。但finish仅从调用当前活动的后堆栈中移除当前活动。 所以有一种情况,比如第一次登录屏幕出现,并且从登录用户在成功注册后进入注册活动,如果您调用finish,它将从后堆栈中删除注册活动,但登录活动仍保留在后堆栈中,当您按back时,您将返回登录屏幕,所以调用
finishAfinity()
在成功登录或注册时删除所有以前的活动。

注意:如果您阻止用户返回按钮,这是一种不好的做法,这样用户就无法通过按返回按钮返回主屏幕。

如果登录成功
finish()
login/RegisterActivity.finish()或onBackPressed()都可以按预期为您工作
private void startActivity() {
    Intent intent = new Intent(this, YourActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
  }