我有一个实现ApplicationLister的主类和一些其他没有实现任何功能的类,我想到的就是这个。
//I create a method for is disposing on my other classes
public void disposable(){
//things to dispose
}
// and then call the method on the main class
public void dispose(){
classObj.disposable();
}
我的想法有什么好处吗?以及我如何知道所有可用的类/方法。
答案 0 :(得分:1)
libgdx中有一个接口可以帮助您实现dispose方法。它允许您将所有一次性物品放入清单并在最后处置。最后,在每个拥有资源的对象上实现一个dispose并不是一个坏主意,例如Assetmanager或Screen实现。但是你不需要它,因为当垃圾收集器在它上面运行时,对象会被破坏。您无法故意删除对象。
查看Disposable Interface以及实现此功能的类,以了解可以处理哪些类。如前所述,它用于保存资源的类。
一个简单的类看起来像这样:
public class Foo implements Disposable{
@override
publi void dispose()
{
//release the resources used here like textures and so on
}
}
它确实看起来像你的方法,但你可以将所有一次性物品添加到一个列表中,以便在游戏关闭时进行处置:
ArrayList<Disposable> disposables = new ArrayList<Disposable>();
Foo myFoo = new Foo();
disposables.add(myFoo);
//game is running
//....
//
for(Disposable d : myFoo)
{
d.dispose();
}
//end of the main
尝试使用Libgdx util类。
进一步阅读有关处置的知识及其原因: Memory Management from libgdx Wiki
这里的一个重要信息是:
[...]实现一个通用的Disposable接口来指示 此类的实例需要在结尾处理手动 终身。