我正在使用此代码在材质上设置纹理。在Android studio的Memory选项卡下,我注意到每次运行此代码时内存都会增加。看起来像内存泄漏或内存管理不好给我。我应该如何在运行时重复设置纹理到材质,以便正确管理内存。
代码:
Timer.schedule(new Timer.Task() {
@Override
public void run() {
materials.get(5).set(TextureAttribute.createDiffuse(new Texture("400px/"+mat5+".png")));
}
}, delay2);
答案 0 :(得分:1)
问题是每次Timer
执行Task
时,您都会创建新的Texture。 Textures
为Disposable
,因此,不再使用时需要disposed
。在上面的代码中,您没有保留对创建的Textures
的引用,因此您失去了dispose
的能力。这会造成内存泄漏。
对此的一个解决方案是使用AssetManager而不是自己管理资产。本课程旨在帮助您减轻管理资产内存消耗的工作量。
另一种解决方案是保留对已创建的Texutres
的引用,并在不需要时确保它们正确disposed
。
就个人而言,我会选择第一个解决方案。一开始可能会令人生畏,但是一旦掌握了AssetsManager
,它就会很好地管理你的资产。