我的应用程序中有一个场景,它可以进行活动a->活动b->活动a->活动b ......无限,最终它将获得OOM。
是否有人知道如何使其成为“不要保持活动”的行为,例如。活动将被杀死以释放内存但仍在历史记录中,因此可以在用户导航回来时重新创建它?
答案 0 :(得分:0)
这是不可能的。这些活动需要存在于Android堆栈中才能够返回给他们。您可以做的是跟踪活动自己管理的数据,以便当用户从ActivityA转到ActivityB到ActivityA时,您将数据包推送到两个活动可用的堆栈上。然后你可以使用`Intent.FLAG_ACTIVITY_REORDER_TO_FRONT'从一个活动转换到下一个活动。
在这种情况下,您将只有一个ActivityA实例和一个ActivityB实例,但是他们应该能够通过查看顶部的数据包,在每次获得控制时向用户显示不同的视图。堆。当用户按下后退按钮时,您应该从堆栈中弹出顶部数据包,然后为其启动相应的活动(使用`Intent.FLAG_ACTIVITY_REORDER_TO_FRONT'以确保您不创建新的实例)。