[英]Android singleton and static objects lifecycle
我正在为Android开发libGDX游戏,但在管理资产时遇到问题。 我有一类单例模式。 我使用静态的最终变量来访问该实例,也使用AssetManager来管理我的资产。 该管理器在构造函数中创建,并在退出时配置。
我的问题是,当我关闭游戏并再次启动它时,类实例是相同的(未删除或未重新创建),并且AssetManager仍然存在但已被处置,因此当我尝试加载我的资产时,所有崩溃。
为什么不删除静态实例? 垃圾收集器要花多长时间? 我可以手动删除它吗? 有什么办法解决这个问题? 我可以使用AssetManager#clear代替AssetManager#dispose ,但是我的类存储引用了游戏使用的所有资产和对象。
我认为,您可能不会关闭游戏,它可能会变成背景,否则,一旦出现在前台或后按任何东西,它可能称为onResume()
或onStart()
而onResume()
则不称为对应的活动上下文,因此您需要在每个onResume()
或onStart()
方法本身中调用getinstance()
。
这样创建您的实例
public static Singleton getInstance(Activity context){
mContext = context;
if(mInstance == null)
{
synchronized (Singleton.class) {
if(mInstance == null) {
mInstance = new Singleton();
}
}
}
return mInstance;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.