*我创建了一个主要的活动和登录活动。
*我的应用会在点击退出按钮后将用户重定向到登录活动,但问题是,当我点击后面时,它仍会转到我不希望我的应用程序执行的主要活动。
*根据我的说法,用后退按钮监听器写一些条件会有所帮助。 有没有其他解决方案来阻止这种情况?
答案 0 :(得分:4)
当您启动登录活动时,您可以使用Activity
标志清除堆栈中的所有其他Intent.FLAG_ACTIVITY_CLEAR_TASK
。
FLAG_ACTIVITY_CLEAR_TASK
标志将导致与activity to be cleared before the activity is started
关联的任何现有任务。即,活动成为新的根,任何旧活动都已完成。此标志只能与FLAG_ACTIVITY_NEW_TASK
示例:
Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
注意:关闭LoginActivity
使用后退,如果您从“活动历史记录”中启动' LoginActivity将启动(而不是MainActivity)
答案 1 :(得分:1)
当您注销时,请确保您的主要活动与您的登录活动不重叠
<强>解决方案:强>
Intent intent = new Intent(this,LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
finish();
startActivity(intent);
<强> FLAG_ACTIVITY_CLEAR_TOP:强> 如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并将此Intent传递给(现在开启) top)旧活动作为新的意图。
答案 2 :(得分:1)
要使后退按钮在LoginActivity中始终退出应用程序:
@Override
public void onBackPressed() {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
super.onBackPressed();
}
重定向时从任务堆栈中删除MainActivity:
Intent intent = new Intent(MainActivity.this,
LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);