如何从另一个班级处置?

时间:2015-09-03 05:36:38

标签: java libgdx dispose

我有一个实现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();
}

我的想法有什么好处吗?以及我如何知道所有可用的类/方法。

1 个答案:

答案 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接口来指示   此类的实例需要在结尾处理手动   终身。