在游戏关闭时处理 libGDX 资源?

Dispose libGDX resources on game close?

我正在使用 libGDX 并在我不再需要它们时释放我的资源以释放 RAM。游戏结束需要手动处理资源吗?或者这是由 Android(或 libGDX)自动完成的?

事实是有些对象需要手动处理 - 由于引用它们例如:

  • 像素图
  • 纹理
  • 位图

和许多其他人 you will find here

为了更轻松地管理您的资产,您应该使用 AssetManager. The way how to use is desribed here,但一般模式是:

  1. 正在创建 AssetManager 实例
  2. 正在将资产加载到 AssetManager 实例
  3. 使用资源从提到的对象中获取它们
  4. 在应用程序生命周期结束时处理 AssetManager 实例

示例代码:

    AssetManager assetManager = new AssetManager();

    assetManager.load("data/mytexture.png", Texture.class);

    assetManager.finishLoading(); //loading resources to asset manager is asynchrous! you can also use .update() method - find it in the reference

    ...

    Texture tex = assetManager.get("data/mytexture.png", Texture.class); //use the asset manager to obtain texture

    ...

    assetManager.clear(); //disposing asset manager with all its resources - you can also use .dispose() method

是的,您必须这样做,否则与所有这些对象关联的本机内存将全部泄漏。在 Android 中关闭一个 Activity(它承载着一个 Libgdx 游戏)不会关闭整个应用程序,因此 OS 和你不会回收内存将丢失您对可以处理的对象的所有引用。