我需要用新的活动替换当前的活动。也就是说,我想启动一个新活动并从任务堆栈中删除当前活动。
根据文档,最好的方法是按照惯例使用Activity.startActivity启动活动,然后立即致电Activity.finish以关闭当前活动。
这是这些API的有效用法还是我应该做其他事情?
答案 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_HOME
,FLAG_ACTIVITY_NEW_TASK
答案 3 :(得分:4)
你可以添加android:launchMode =" singleInstance"在您的活动中,然后覆盖onNewIntent方法以更新日期
答案 4 :(得分:0)
您可以在开始活动时使用FLAG_ACTIVITY_CLEAR_TASK。我还在清单中为我的活动定义了launchMode为singleTask,但这是因为我希望新活动具有该行为。我认为,只要将startActivity标志FLAG_ACTIVITY_CLEAR_TASK传递给您,就可以清除上一个活动,而无论您将launchMode用于新活动中是什么。