因此,我有一个需要登录和注册的应用程序。两者都调用API,并且响应返回唯一的令牌。我计划将此令牌存储在“共享首选项”中,并在注销时清除它。我的问题是登录或注册后如何处理后退?如果用户按下后退按钮登录,则我不想返回登录/注册屏幕。
答案 0 :(得分:0)
成功登录或注册后使用
finish()
破坏登录或注册活动
答案 1 :(得分:0)
正如我的朋友所说,成功登录后,您应该通过调用finish()方法来完成此活动,然后启动新活动,或者开始新活动然后完成登录活动,没什么不同,
只要记得通过调用which composer
答案 2 :(得分:0)
您应该创建一个类来存储此类会话信息。
如果用户(或操作系统本身)杀死了应用程序进程,则将其存储在SharedPreferences
中会导致您不删除该令牌。
无论如何,如果您想这样做,则只需覆盖onBackPressed
中的Activity
方法:
@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()
}
答案 3 :(得分:0)
在第二个活动(登录或注册后转到的活动)中,重写Rcpp
方法并在其中实现自己的逻辑。您可以选择在按下后退键时不执行任何操作,或可能会一起退出该应用程序。由您决定。
onBackPressed
答案 4 :(得分:0)
您可以使用意图标志从登录或注册屏幕开始下一个活动,这将清除活动堆栈,现在当用户在不显示当前活动之前按回任何活动时。您可以在这里阅读有关意图标志的更多信息:https://developer.android.com/reference/android/content/Intent
private void startActivity() {
Intent intent = new Intent(this, YourActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
答案 5 :(得分:0)
您可以致电finish()
破坏活动。但是完成只能从调用它的后堆栈中删除当前活动。
因此,出现这样的情况,例如出现首次登录屏幕,并且在成功注册后,如果登录成功,则登录用户将进入注册活动,如果您调用完成,它将从后退堆栈中删除注册活动,但是登录活动仍保留在后退堆栈中,当您按返回时,您将返回登录屏幕,以便呼叫finishAffinity()
,以删除成功登录或注册后的所有先前活动。
注意:如果您阻止用户使用后退按钮不是一种好习惯,则用户无法通过按后退按钮返回主屏幕。