如何处理另一个class?

How to dispose from another class?

我有一个主要的 class 实现了 ApplicationLister 和一堆其他的 class 没有实现任何东西,我的想法是这样的。

//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();
}

我的想法好吗?还有我怎么知道所有的 classes/methods 是一次性的。

libgdx中有一个接口强制你实现dispose方法。它允许您将所有一次性用品放入列表中并在最后处理它们。最后,在每个持有资源(例如 Assetmanager 或 Screen 实现)的对象上实施 dispose 并不是一个坏主意。但是你并不需要它来处理所有事情,因为当垃圾收集器对它进行 运行 处理时,对象确实会被销毁。您不能故意删除对象。

查看实现此功能的 Disposable Interface 和 classes,以了解您可以处理哪些 classes。正如已经提到的,它用于 class 拥有资源的 es。

一个简单的 class 看起来像这样:

public class Foo implements Disposable{
    @override
    public 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 实用程序 classes.

进一步阅读有关处置及其原因的知识: Memory Management from libgdx Wiki

这里的一个重要句子是:

[...] implement a common Disposable interface which indicates that instances of this class need to be disposed of manually at the end of the life-time.