我的应用中的活动流程。
WelcomeActivity - > SignInActivity - > SignUpActivity - > TabsActivity(这是主要的) - > ...
我想在启动TabsActivity时关闭所有以前的活动(欢迎,SignIn,SignUp)。
我尝试了几种方法......
TabsActivity。启动时清除任务= true?但没有工作(也许)
TabsActivity。启动模式= singleTask?但没有工作
但我不想“保存3个活动并调用每个activity.finish()”
视情况而定,“有2或4项活动不是3”,或 “我不知道活动堆栈中有哪些活动。”
我希望清除以前的所有活动,无论情况如何。
帮帮我:)
抱歉,我的英语很差......谢谢。
答案 0 :(得分:6)
如果我理解正确,您可能需要尝试使用以下代码启动TabsActivity
:
Intent intent = new Intent(getApplicationContext(), TabsActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
标志Intent.FLAG_ACTIVITY_CLEAR_TOP
清除历史记录。
答案 1 :(得分:2)
尝试按照FLAG_ACTIVITY_NEW_TASK
的文档中所述添加FLAG_ACTIVITY_CLEAR_TOP
:
此启动模式也可用于 结合良好的效果 FLAG_ACTIVITY_NEW_TASK:如果习惯的话 它启动任务的根活动 会带来任何正在运行的 该任务的实例 前景,然后清除它 根状态。这特别有用, 例如,启动时 来自通知的活动 管理器。
Intent intent = new Intent(this, TabActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
答案 2 :(得分:1)
答案 3 :(得分:0)
清除Backstack ,您可以从中调用tabActivity
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
答案 4 :(得分:0)
使用
Intent intent = new Intent(getApplicationContext(), ClassToLaunch.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
这将完成之前的活动
答案 5 :(得分:0)
要关闭以前的活动,你应该使用startActivityForResult启动New Activity,然后在使用finish()调用结束当前Activity,为之前的Activity调用setResult(value)之前,之前的Activity将获得一个可以调用finish的回调( )用于上一个活动。