所以我有一个 Global
类,它应该保存可以从我的所有文件访问的各种数据。 全局
看起来像这样:
public class Global{
public static int rules = 0;
public static String data;
public static int score;
public static int speed = 0;
//etc...
}
我通过执行 Global.x = ___
等操作来设置并获取它。
但是,我最近清理了项目中的内存泄漏,其中我创建的 View (View A
) 的生命周期比预期的要长。
此View A
分配了Global.x
。
现在,一旦我移动到 View B
, View A
就会被 GC 回收。
但是,Global.x
不再具有值。
这是 Java 的预期行为吗?如果是这样,我如何从 View A
向我的 Global 类分配一个变量,并确保即使在 View A
死亡后它仍然保留。
或者我只是在其他地方做错了什么?
我想我会问,以防万一我忽略了某些东西,但很可能是后者。
最佳答案
您所说的问题缺少可以帮助您解决特定问题的事实。考虑粘贴您可以创建的能够重现该问题的最小 Java 代码。话虽如此,你的设计很糟糕,你应该考虑使用单例。
public class Global {
private Global INSTANCE = new Global();
private int speed;
private Global() {
// whatever you do to initialize...
speed = 65;
}
public Global getInstance() {
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
}
无论你在什么范围内,你都可以说:
Global.getInstance().getSpeed();
或
Global.getInstance().setSpeed(25);
等等...
关于Java - 我不断丢失对全局类的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14950024/