2

在我的应用程序中有一个场景,它可以无限地进行活动 a-> 活动 b-> 活动 a-> 活动 b...,最终它会得到 OOM。

有没有人知道一种使它像“不保留活动”行为的方法,例如活动将被杀死以释放内存但仍然在历史中,所以它可以在用户导航回来时重新创建?

4

1 回答 1

0

这是不可能的。活动需要存在于堆栈中,Android 才能返回它们。您可以做的是跟踪活动自己管理的数据,以便当用户从 ActivityA 到 ActivityB 再到 ActivityA 时,您不断将数据包推送到两个活动都可用的堆栈上。然后你可以使用 `Intent.FLAG_ACTIVITY_REORDER_TO_FRONT' 从一个活动过渡到下一个活动。

在这种情况下,您将只有一个 ActivityA 实例和一个 ActivityB 实例,但它们应该能够在每次获得控制权时向用户呈现不同的视图,只需查看堆栈顶部的数据包即可。当用户按下后退按钮时,您应该从堆栈中弹出顶部数据包,然后为其启动适当的活动(使用 `Intent.FLAG_ACTIVITY_REORDER_TO_FRONT' 以确保您不会创建新实例)。

于 2013-01-24T19:49:02.690 回答