LibGdx - 在Sprite中配置Sprite或Texture是必需的吗?

时间:2015-04-11 05:38:03

标签: android libgdx

我正在使用我的资产中的纹理加载我的精灵,就像我在下面提到的那样。

gameBoardSprite = new Sprite( new Texture(Gdx.files.internal("data/gameboard.png")));  

我需要在我的代码中处理以下内容吗?这是强制性的吗?

gameBoardSprite.getTexture().dispose();

2 个答案:

答案 0 :(得分:1)

是的,在您丢失对它的引用之前,必须在任何dispose对象上调用Disposable,否则会出现内存泄漏。 VM不会自动处理OpenGL对象(如Textures)使用的本机内存,因此您必须在删除引用之前手动执行此操作,并让GC声明对象本身声明的“非本机”内存。

如果您要在应用的生命周期内使用纹理,您可能不打算永远不需要处理它,但在Android上,您仍然需要Game的{​​{1}方法因为有些情况下Android会关闭你的Activity而不是整个Application,所以当用户重新打开你的游戏时,所有以前的纹理都会被泄露。

答案 1 :(得分:0)

从技术上讲,你不必处理它,但不处理它会影响你的表现。

在Android Dalvik上将启动并决定是否释放一些内存。从而造成帧丢失。

在桌面上,可能会发生内存泄漏。

阅读here了解更多信息