启动新活动并清除除家庭活动之外的先前活动

时间:2015-11-02 22:33:16

标签: android android-intent android-activity android-task

我在下面发布了一系列活动:

家庭活动 - >第二项活动 - >第3项活动 - >第四项活动

我想要实现的是当第3个活动启动第4个活动时,它会从后台清除活动2和3。因此,单击第4个活动将返回到主页活动

即。用户仍然可以从第3个活动返回到第2个活动,但是一旦启动第4个活动,活动2和3就会被删除。

实现此目的的配置是什么?

4 个答案:

答案 0 :(得分:3)

听起来像是CLEAR_TOP

试试这个:

Intent i = new Intent(this, HomeActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

答案 1 :(得分:2)

您可以在BroadCastReceiver实施中finish()的第2和第3个活动中注册onReceive()

触发广播onlaunching 4th Activity。

如果它正常工作,将相同的Broadcast实现移动到BaseClass并添加一个布尔检查来注册广播。

如果您使用的是片段,可以尝试

getFragmentManager().popBackStack("tag_of_fragment_to_pop", 0);

答案 2 :(得分:1)

我认为最简单的方法是使用这样的东西:

Intent homeActivityIntent = new Intent(fourth.this,
                        home.class);
homeActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
homeActivityIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(homeActivityIntent);

答案 3 :(得分:0)

虽然所有的答案都很有用,而且我只有2项活动需要关闭,但这就是我所做的:

    活动2上的
  1. startActivityForResult()
  2. 在活动3上成功启动活动4后,我在活动3上致电RESULT_OK之前设置了finish()
  3. 在活动2上,我在onActivityResult()处理成功的结果,这样我就知道活动4已被推出,所以我可以完成活动2。
  4. 因此,活动2和3都会在启动活动4时关闭。