Android 在后台堆栈中开始另一个 activity 之前的新 activity 并清除旧 activity 之上的活动

Android start a new activity before another activity in backstack and clear activities above old activity

我遇到了一个 Activity backstack 问题。假设我的后台有 5 个活动:比如 Activity A、Activity B、Activity C、Activity D 和 Activity E。在某个时候我希望用户在按下 Activity E 上的后退按钮时转到另一个 Activity G。Activity G 需要放在 Activity B 之后,所以我想要 Activity C 和 Activity D 从 backstack 中移除(否则用户将转到 Activity D)。

Current situation A --> B --> C --> D --> E

Preferred situation A --> B --> G

现在我明白我可以使用 FLAG_ACTIVITY_CLEAR_TOP 当 Activity G 会在后台。但是 Activity 不是。我也不想使用 FLAG_ACTIVITY_NEW_TASK 因为这样 Activities A 和 B 也会消失。

另一种方法是将

android:noHistory="true"

在活动 C 和 D 的清单中,但这会使用户在每次用户从 Activity C 或 D 中按下后退按钮时返回到 Activity B。

谁能给我指出正确的方向?

当您从 C->D 开始 activity 时,您输入 finish();

Intent intent=new Intent(C.this,D.class);

startActivity(意图);

完成();

同样的方法 D->G 这样就可以了。

You can try below

C ----startActivityForResult----------> D ---startActivityForResult--> E

handle onActivityResult with result accordingly to finish Activities, make sure its chained action calls