繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM