gpt4 book ai didi

java - Android单例和静态对象生命周期

转载 作者:行者123 更新时间:2023-11-29 21:07:15 26 4
gpt4 key购买 nike

我正在为 Android 开发 libGDX 游戏,但在管理我的 Assets 时遇到了问题。我有一个单例模式的类。我使用静态最终变量来访问这个实例,我还使用 AssetManager管理我的 Assets 。该管理器在构造函数中创建并在退出时处理。

我的问题是,当我关闭游戏并再次启动它时,类实例是相同的(既未删除也未重新创建)并且 AssetManager仍然存在但已被处置,所以当我尝试加载我的 Assets 时,所有 Assets 都崩溃了。

为什么不删除静态实例?垃圾收集器需要多长时间才能将其删除?我可以手动删除它吗?有什么办法可以解决这个问题吗?我可以使用 AssetManager#clear相反 AssetManager#dispose ,但我的类存储对游戏使用的所有 Assets 和对象的引用。

最佳答案

我想,你可能不会关闭游戏,它可能会进入后台,否则,一旦出现在前台或被阻止,无论发生什么,它都可能被称为 onResume() onStart().while onResume()并没有调用对应的Activity context,所以需要在每个onResume( )onStart() 方法本身。

像这样创建你的实例

public static Singleton getInstance(Activity context){

mContext = context;
if(mInstance == null)
{
synchronized (Singleton.class) {
if(mInstance == null) {
mInstance = new Singleton();
}
}
}
return mInstance;
}

关于java - Android单例和静态对象生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24163627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com