我的应用有三个主要活动。
当我启动应用程序时,启动屏幕工作四秒钟,然后它进入登录活动。如果用户登录成功,则应用程序进入菜单活动在我的菜单中,有注销按钮。如果用户点击它,那么app会登录登录活动。它运行正常。但是,如果用户不想注销并单击设备上的后退按钮,我想直接退出应用程序。如果我找不到这个问题的解决方案,用户必须进入登录屏幕,然后启动屏幕,最后当他们想要使用后退按钮退出应用程序时退出。我应该使用哪种解决方案?
答案 0 :(得分:7)
登录成功后,您可以在启动菜单活动后立即在登录活动上致电finish()
。这有效地从后栈中删除了Login Activity。
编辑:如下面的评论所述,这也适用于你的Splash Activity。
答案 1 :(得分:3)
@Keyboardsurfer提供的解决方案对您非常有用,但如果您想处理Back按钮事件,请使用以下代码获取有关后退按钮事件的通知。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
Log.d(this.getClass().getName(), "back button pressed");
// your code to handle back button event.
return true;
}
return super.onKeyDown(keyCode, event);
}
答案 2 :(得分:2)
登录成功后,您应按如下方式调用您的菜单活动:
Intent intent=new Intent(LoginActivity.this,MenuActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
this.finish();
如果用户是通过SharedPreferences登录的,我认为你正在检查你的Splash Activity,你应该按照你在调用这两个活动中指定的方式关闭你的Splash Activity。
答案 3 :(得分:0)
你必须覆盖Activity的(仅限Splash)onPause方法:
以下是如何;
@Override
protected void onPause() {
super.onPause();
this.finish();
}
并在登录活动中在登录完成后调用finish方法。答案已编辑(参见下面的讨论)
答案 4 :(得分:0)
I don't think it would cause unexpected behaviour in other Activities
, only the Splash Activity
cause its its onPause()
that was override not the others, and since splash is only called once i don't think it matters.