删除除 home activity 之外的所有先前活动

Remove all the previous activites except home activity

如何删除除 HomeActivity 之外的所有活动。

例如: A(HomeActivity)->B->C->D 现在再次调用 B activity 删除 C & D 活动。我正在通过意图将一些数据从 D activity 发送到 B activity。我有下一步按钮,如果我点击下一步按钮,那么这个过程就会完成。如果我反击,那么我的过程将是 D->C->B->A

那么你需要在 C 和 D 中创建 static activity 变量 activity。

就这样

 //create static variable
 public static CActivity cactivity;

然后在ActivityonCreate初始化这个变量。

  //initialization 
  cactivity=this;

在你想要的地方activity完成

// use this where you want to finish activity 
CActivity.cactivity.finish();

确保 Activity 必须在后台 运行 否则你的应用程序会崩溃。

我建议的是一个不太顺利的解决方案,但不是为所有这些开始活动,而是用 startActivityForResult 代替它们,搜索结果代码,如果它是从 activity (这当然是你自己处理的)然后用结果代码调用所有 activity 完成,直到你到达你的家 activity.

当您从 D->B 出发时,请使用 intent.setFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP); 它将关闭其之上的所有其他活动,并且此 Intent 将作为新 Intent 传递给(现在位于顶部)旧 activity。

FLAG_ACTIVITY_CLEAR_TOP