启动新的 activity 并清除除主页 activity 之外的先前活动

Launch new activity and clear previous activities except home activity

下面有一系列 activity 启动:

主页Activity -> 第 2 Activity -> 第 3 Activity -> 第 4 Activity

我想要实现的是,当第 3 个 activity 启动第 4 个 activity 时,它从后台清除活动 2 和 3。于是,点击返回4号activityreturns回到首页activity

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

实现这个的配置是什么?

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

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

听起来你想要 CLEAR_TOP

试试这个:

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

您可以在第 2 和第 3 个 Activity 中注册 BroadCastReceiver,其 onReceive() 实现中有 finish()

在第 4 次启动时触发广播 Activity。

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

如果您正在使用片段,您可以尝试

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

虽然所有答案都很有用,而且我只有 2 个活动想结束,但我还是这样做了:

  1. startActivityForResult() 在 Activity 2
  2. 在 Activity 3 上成功启动 Activity 4 我在 Activity 上调用 finish() 之前设置了 RESULT_OK 3.
  3. 在 Activity 2 上,我在 onActivityResult() 上处理成功的结果,这样我就知道 Activity 4 已经启动,所以我可以完成 Activity 2.

因此 Activity 2 和 3 在 activity 4 启动时关闭。