对于重新排序到前台,将继承的活动视为相同

Treat inherited Activities as the same for Reorder to Front

我有一个包含 3 个活动 A、B 和 C 的项目。ActivityB 扩展了 A。

A​​ 和 B 应该是单个实例,因此我在切换活动时将 Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 添加到我的意图中。 这可以正常工作,因为导航 A > B > A > C > B 只给我返回堆栈 A > C > B。

但理想情况下,我希望 A 和 B 在后台堆栈的上下文中被同等对待,因为它们对用户来说看起来是一样的,它们只是在表面上存在差异。

这不是我自己的项目,所以我没有更改 Activity 结构的灵活性。有没有办法让A和B被同等对待?我尝试了 taskAffinity,但我不想在最近的任务中单独输入,也不想在新任务中显示可见的 switch/animation。我也考虑过CLEAR_TOP,但重要的是不要从堆栈中删除其他活动(即C)

我期望的是导航 A > B > A > C > B 应该只给我返回堆栈 C > B。

不,没有办法让 Android 在返回堆栈方面对这 2 个活动一视同仁。

您应该将代码从 ActivityB 移动到 ActivityA 并在 Intent 中使用 "extra" 来指示 Activity 是否应该运行喜欢 A 或喜欢 B。这是能够确保 AB 中的一个,但不会同时出现在堆栈中的唯一方法。