如何删除活动堆栈底部的Activity?

时间:2011-02-20 00:40:28

标签: android limit activity-stack

在我的申请中,我有大约十几项活动。但是,大多数都有一些快捷按钮,因此用户可以从应用程序的任何位置启动最重要的按钮。这意味着,用户可以跳转应用程序,填充活动的活动堆栈。我无法改变这种行为,因为我需要堆栈提供的历史记录功能(所以我不能只使用noHistory选项)。

显然,我想针对这种可能的内存泄漏做点什么。如果堆栈的大小大于某个数字,是否可以从活动堆栈的底部删除该条目?那么堆栈只会记住最新的X(例如30)活动吗?

由于

2 个答案:

答案 0 :(得分:3)

  

显然,我想针对这种可能的内存泄漏做点什么。

什么可能的内存泄漏? Android将根据需要销毁活动以回收内存。如果用户使用BACK按钮按下一个Android销毁的方式,则会使用原始Intent重新创建活动,并通过onSaveInstanceState()传递您填写的套装。

  

如果堆栈的大小大于某个数字,是否可以从活动堆栈的底部删除该条目?那么堆栈只会记住最新的X(例如30)活动吗?

不是我知道的。再说一次,你不应该需要它。

答案 1 :(得分:1)

历史堆栈将由Android Runtime管理;你不必担心。

但是,如果您之前已启动某项活动并想将其置于最前面,则可以通过设置适当的Intent Flags(如ACTIVITY_FLAG_REORDER_TO_FRONT)来执行此操作。这样,当不需要时,您不会在堆栈上有重复的活动。请注意,这将影响历史的年表/线性特性。