安卓:OutOfMemory 错误和回溯堆栈
以下工作表表示此问题所涉及的应用程序中的工作流程。
我遇到了 OutOfMemory Errors 的问题,主要是因为用户能够多次从活动 B 切换到活动 D(他们每次尝试都会显示不同的内容),而不会破坏以前的活动。这导致了一个非常大的回堆栈,导致OutOfMemory错误。
为了避免这种情况,我按照建议将父活动添加到清单,并使用 TaskStackBuilder 类创建新的回堆栈:
void openDFromB()
{
Intent i = new Intent(this, ActivityD.class);
TaskStackBuilder.create(this)
.addParentStack(ActivityD.class)
.addNextIntent(i)
.startActivities();
}
如果用户现在从活动 B 切换到 D,则 MainMenu、A 和 B 将被销毁,并创建新的 Backstack(MainMenu、C、D)。这解决了我在api级别大于10的内存问题,但不幸的是,TaskStackBuilder不会为api 11之前的设备创建回堆栈。
任何想法如何避免用户在api 11之前堆叠无限数量的活动?这是否可能,或者我应该尝试在 onPause 中释放尽可能多的资源,以便在 OoM 之前获得最大数量的堆叠活动?
提前致谢!