以下表格显示了应用程序中此问题的工作流程。
我遇到了OutOfMemory错误的问题,主要是因为用户能够多次从B活动切换到D活动(每次都会显示不同的内容),而之前的活动没有被销毁。这导致了一个非常大的返回堆栈,从而导致OutOfMemory错误。
为了避免这种情况,我遵循了建议,在清单中添加父活动,并使用TaskStackBuilder类创建新的返回堆栈。
有什么办法可以避免在API 11之前的用户堆积无限数量的活动吗?这是否可能,或者我应该尝试在onPause中释放尽可能多的资源,以获得最大数量的堆叠活动,然后再发生OutOfMemory错误?
提前感谢您!
![workflow](https://istack.dev59.com/xVqTU.webp)
为了避免这种情况,我遵循了建议,在清单中添加父活动,并使用TaskStackBuilder类创建新的返回堆栈。
void openDFromB()
{
Intent i = new Intent(this, ActivityD.class);
TaskStackBuilder.create(this)
.addParentStack(ActivityD.class)
.addNextIntent(i)
.startActivities();
}
如果用户现在从活动B切换到D,MainMenu、A和B将被销毁,并创建一个新的后退栈(MainMenu、C、D)。这解决了我在API级别大于10时的内存问题,但不幸的是,TaskStackBuilder不会为先前API 11的设备创建后退栈。有什么办法可以避免在API 11之前的用户堆积无限数量的活动吗?这是否可能,或者我应该尝试在onPause中释放尽可能多的资源,以获得最大数量的堆叠活动,然后再发生OutOfMemory错误?
提前感谢您!