在我的应用程序中,我有大约十几个活动。但是,其中大多数都有一些快捷按钮,因此用户可以从应用程序的任何位置启动最重要的按钮。这意味着,用户可以在应用程序中跳转,用活动填充活动堆栈。我无法改变这种行为,因为我需要堆栈提供的历史功能(所以我不能只使用 noHistory 选项)。
显然,我想对这种可能的内存泄漏做点什么。如果堆栈的大小大于某个数字,是否可以从活动堆栈底部删除条目?所以栈只记得最新的X(比如30)个Activity?
谢谢
在我的应用程序中,我有大约十几个活动。但是,其中大多数都有一些快捷按钮,因此用户可以从应用程序的任何位置启动最重要的按钮。这意味着,用户可以在应用程序中跳转,用活动填充活动堆栈。我无法改变这种行为,因为我需要堆栈提供的历史功能(所以我不能只使用 noHistory 选项)。
显然,我想对这种可能的内存泄漏做点什么。如果堆栈的大小大于某个数字,是否可以从活动堆栈底部删除条目?所以栈只记得最新的X(比如30)个Activity?
谢谢
显然,我想对这种可能的内存泄漏做点什么。
什么可能的内存泄漏?Android 会根据需要销毁活动以回收内存。如果用户通过 BACK 按钮进入一个已销毁的 Android,则该 Activity 将使用其原始重新创建,Intent
并通过您填写的 Bundle 传递onSaveInstanceState()
。
如果堆栈的大小大于某个数字,是否可以从活动堆栈底部删除条目?所以栈只记得最新的X(比如30)个Activity?
不是我知道的。同样,你不应该需要它。
History Stack 将由 Android Runtime 管理;你不必担心。
但是,如果您之前启动了一项活动并希望将其置于最前面,您可以通过设置适当的Intent 标志(如 ACTIVITY_FLAG_REORDER_TO_FRONT)来实现。这样一来,您就不会在不需要时在堆栈上有重复的活动。请注意,这将影响历史的年表/线性性质。