我希望this.dispose();
具有相同的效果而不会出现StackOverflow错误。如何轻松处理我的所有变量(我有~100)?我想删除当前屏幕并切换屏幕,如果我切换回来,就好像旧屏幕永远不存在一样。我一直在尝试各种方法来处理当前屏幕,到目前为止,在dispose()
方法中手动处理似乎是最好的选择。
答案 0 :(得分:3)
在大多数情况下,手动处理dispose()
Screen
方法是最好的方法,因为对于大多数资源来说,这是最早可能的,也是最新的可能时间点。有时如果您知道在更改Screen
之前不再需要某些东西,您也可以在此之前完成,但这应该只是一个特例。
至于你的StackOverflow错误:这不是因为你有很多变量,而是因为你正在处理的资源之间似乎存在任何类型的循环依赖。它可以只是两个dispose()
相互依赖的资源。一个例子:
Class A {
private B b;
public void dispose() {
b.dispose();
}
}
Class B {
private A a;
public void dispose() {
a.dispose();
}
}
只要你调用这两个资源中的一个dispose()
,你就会遇到无限循环并最终成为StackOverflow,因为你的函数调用堆栈是有限的。
这也可能不仅仅有两个资源,可能还有另一个C类,你可能有一个像A一样的圈子 - > B - > C - >甲