在我的应用程序中有一个场景,它可以无限地进行活动 a-> 活动 b-> 活动 a-> 活动 b...,最终它会得到 OOM。
有没有人知道一种使它像“不保留活动”行为的方法,例如活动将被杀死以释放内存但仍然在历史中,所以它可以在用户导航回来时重新创建?
在我的应用程序中有一个场景,它可以无限地进行活动 a-> 活动 b-> 活动 a-> 活动 b...,最终它会得到 OOM。
有没有人知道一种使它像“不保留活动”行为的方法,例如活动将被杀死以释放内存但仍然在历史中,所以它可以在用户导航回来时重新创建?
这是不可能的。活动需要存在于堆栈中,Android 才能返回它们。您可以做的是跟踪活动自己管理的数据,以便当用户从 ActivityA 到 ActivityB 再到 ActivityA 时,您不断将数据包推送到两个活动都可用的堆栈上。然后你可以使用 `Intent.FLAG_ACTIVITY_REORDER_TO_FRONT' 从一个活动过渡到下一个活动。
在这种情况下,您将只有一个 ActivityA 实例和一个 ActivityB 实例,但它们应该能够在每次获得控制权时向用户呈现不同的视图,只需查看堆栈顶部的数据包即可。当用户按下后退按钮时,您应该从堆栈中弹出顶部数据包,然后为其启动适当的活动(使用 `Intent.FLAG_ACTIVITY_REORDER_TO_FRONT' 以确保您不会创建新实例)。