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