我有一个启动画面活动,然后登录活动。我的历史堆栈的样子:清除任务中的所有活动?
SplashActivity
LoginActivity
当用户通过LoginActivity成功登录,我要开始WelcomeActivity,但清除整个堆栈:
SplashActivity
LoginActivity // launches WelcomeActivity ->
WelcomeActivity
// but now all three are in the history stack, while I only
// want WelcomeActivity in the stack at this point.
有一些标志,我可以用做那?
// LoginActivity.java
Intent intent = new Intent(this, WelcomeActivity.class);
intent.addFlag(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
不知道是否使用FLAG_ACTIVITY_CLEAR_TASK会清除所有活动,我的任务或没有。我可以通过使用startActivityForResult()调用展开堆栈来“手动”执行此操作,但会更脆弱并需要更多代码进行维护。
谢谢
“不知道是否使用FLAG_ACTIVITY_CLEAR_TASK将清除出在我的任务与否的所有活动。” - 使用BACK按钮并亲自查看。如果您可以使用BACK按钮回到以前的活动,那么他们仍然在后台。 – 2013-02-19 13:12:10
答案是使用'FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK',不是吗? – 2014-03-31 09:53:46
代码中有一个错字...它应该是'.addFlags(...)'而不是'.addFlag'。 – Developer 2015-06-07 23:02:39