我正在使用我的资产中的纹理加载我的精灵,就像我在下面提到的那样。
gameBoardSprite = new Sprite( new Texture(Gdx.files.internal("data/gameboard.png")));
我需要在我的代码中处理以下内容吗?这是强制性的吗?
gameBoardSprite.getTexture().dispose();
答案 0 :(得分:1)
是的,在您丢失对它的引用之前,必须在任何dispose
对象上调用Disposable
,否则会出现内存泄漏。 VM不会自动处理OpenGL对象(如Textures)使用的本机内存,因此您必须在删除引用之前手动执行此操作,并让GC声明对象本身声明的“非本机”内存。
如果您要在应用的生命周期内使用纹理,您可能不打算永远不需要处理它,但在Android上,您仍然需要Game
的{{1}方法因为有些情况下Android会关闭你的Activity而不是整个Application,所以当用户重新打开你的游戏时,所有以前的纹理都会被泄露。
答案 1 :(得分:0)