替换当前活动

时间:2010-01-22 09:14:07

标签: android android-activity

我需要用新的活动替换当前的活动。也就是说,我想启动一个新活动并从任务堆栈中删除当前活动。

根据文档,最好的方法是按照惯例使用Activity.startActivity启动活动,然后立即致电Activity.finish以关闭当前活动。

这是这些API的有效用法还是我应该做其他事情?

5 个答案:

答案 0 :(得分:56)

是。用这种方式使用api很好。

答案 1 :(得分:28)

实现此目的的正确方法是使用以下内容:

Intent intent = new Intent(this,MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_TASK_ON_HOME);
startActivity(intent);
this.finish();

代码假定您处于活动状态,否则如果您使用的是片段,请使用 getActivity()

这样,活动开始,您正确设置后退按钮的层次结构,并且还会破坏相应的活动。

答案 2 :(得分:5)

尝试在意图标记

中使用FLAG_ACTIVITY_TASK_ON_HOMEFLAG_ACTIVITY_NEW_TASK

答案 3 :(得分:4)

你可以添加android:launchMode =" singleInstance"在您的活动中,然后覆盖onNewIntent方法以更新日期

参考 PlayerActivity in ExoPlayer Demo

答案 4 :(得分:0)

您可以在开始活动时使用FLAG_ACTIVITY_CLEAR_TASK。我还在清单中为我的活动定义了launchMode为singleTask,但这是因为我希望新活动具有该行为。我认为,只要将startActivity标志FLAG_ACTIVITY_CLEAR_TASK传递给您,就可以清除上一个活动,而无论您将launchMode用于新活动中是什么。