我想从任何活动回到MainActivity . 例如,我的活动堆栈: A - B - C - D. A(MainActivity)位于底部,D位于堆栈顶部 .
当我使用 android:launchMode="singleTask"
. 我可以按照我的预期在任何活动中回到A.
但是当我使用flag FLAG_ACTIVITY_NEW_TASK (没有launchMode = "singleTask")时,它不能按预期工作,它会打开一个新的Activity . 堆栈是: A - B - C - D - A 不是文档写道:
FLAG_ACTIVITY_NEW_TASK在新任务中启动活动 . 如果任务已在您正在启动的活动上运行,则该任务将返回到前台,并恢复其上一个状态,并且活动将在onNewIntent()中接收新的意图 . 这会产生与上一节中讨论的“singleTask”launchMode值相同的行为 .
谁知道原因?谢谢 .
5 回答
我希望这个解决方案可以解决你的问题:: - 只将此设置为
Intent
找到解决方案:
注意:它将清除以前的所有活动,并且将会使用HomeActivity
在一个中尝试这个 . 您可以像这样在堆栈中添加和删除活动 .
用户在setContentView添加到堆栈之前添加活动 .
对于删除活动,您只需调用removeActivity()并传递添加活动时使用的密钥 .
覆盖每个活动的
onBackpress
方法:你应该使用下面的代码来跳转MainActivity.With
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
跟随意志标志它清除所有以前的活动 .注意一件事,你使用
android:launchMode="singleTask"
所以当从 A 活动转移到另一个活动时,你必须使用this.finish()
方法完成 A 活动 .