我正在开发一款在Android上运行的libGdx游戏。 我有一些与单身模式有关的情况。
在我的应用中,所有绘图调用都由一个名为“Spritepool”的类管理。 它运行在主线程上,进行纹理更新,排序,绘图......所以我把它变成了单身。
并且它几乎正常工作..但是在退出一次后重新启动应用程序崩溃。
我认为这是因为当app再次启动时,单例类Spritepool不会调用其构造函数...
将Spritepool更改为枚举单例不是解决方案。 我的Spritepool类看起来像这样..
public enum Spritepool {
INSTANCE;
BitmapFont debug = new BitmapFont();
public static Spritepool get(){ return INSTANCE; }
Spritepool(){
Gdx.app.log("sprite pool", "=== sprite pool constructor calling... ");
}
...
...
public void workingCodes(){...}
}
我现在已经从构造函数Spritepool()中删除了除日志之外的所有初始化。 首次启动应用程序时,构造函数的日志打印良好,成员“调试”实例化良好。 退出应用程序并重新启动后,所有应用程序循环正常工作,Spritepool()日志消失,成员“debug”指向垃圾..(不是新的BitmapFont()..)
这是android上普通单例类的正常行为吗? (我想不是......也许我在某处做错了) ..我该怎么做才能做到对? 任何建议将被认真考虑。感谢。
答案 0 :(得分:0)
为什么使用枚举?
试试这个:
public class Spritepool { 私人Spritepool INSTANCE;
BitmapFont debug = new BitmapFont();
public static Spritepool get(){
if (INSTANCE == null) INSTANCE = new Spritepool();
return INSTANCE;
}
Spritepool(){
Gdx.app.log("sprite pool", "=== sprite pool constructor calling... ");
}
...
...
public void workingCodes(){...}
}