Android BitmapFont内存泄漏

Android BitmapFont内存泄漏,android,memory-leaks,libgdx,bitmap-fonts,Android,Memory Leaks,Libgdx,Bitmap Fonts,我目前正在使用LibGDX开发一个安卓应用程序,并指出我的内存泄漏是由于这个方法造成的。有人能帮我弄清楚这是从哪里来的吗?我曾尝试通过原生LibGDX方法进行回顾,但仍然难以找到漏洞所在。谢谢 private void drawScore() { scoreLength = ("" + myWorld.getScore()).length(); AssetLoader.shadow.draw(batcher, "" + myWorld.getScore(),

我目前正在使用LibGDX开发一个安卓应用程序,并指出我的内存泄漏是由于这个方法造成的。有人能帮我弄清楚这是从哪里来的吗?我曾尝试通过原生LibGDX方法进行回顾,但仍然难以找到漏洞所在。谢谢

private void drawScore() {
    scoreLength = ("" + myWorld.getScore()).length();
    AssetLoader.shadow.draw(batcher, "" + myWorld.getScore(),
            165 - (3 * scoreLength), midPointY - 82);
    AssetLoader.font.draw(batcher, "" + myWorld.getScore(),
            165 - (3 * scoreLength) - 1, midPointY - 83);
}

最好是预先计算所有数据,以便渲染不会执行任何字符串连接或其他操作

因此,当分数发生变化时:

  • 更新分数字符串并将其存储在字段中
  • 计算位置并将其存储在
    矢量2
    字段中
  • drawScore
    上,仅使用字段中的数据进行绘制


    您还可以检查以更好地计算字符串的位置。应用与以前相同的原则,不要在绘图时使用新的nor计算,而是在分数更改时使用它们。

    最好是预先计算所有数据,以便渲染不会执行任何字符串连接或其他操作

    因此,当分数发生变化时:

  • 更新分数字符串并将其存储在字段中
  • 计算位置并将其存储在
    矢量2
    字段中
  • drawScore
    上,仅使用字段中的数据进行绘制


    您还可以检查以更好地计算字符串的位置。应用与以前相同的原则,不要在绘图时使用新的或计算,而是在分数发生变化时进行计算。

    可能是任何情况……可能是您在某个时候处理了资产管理器,或者资产管理器是静态的,这可能会导致Android生命周期出现问题。也许你加载的字体不正确。你能给我们提供更多的代码吗?它是否经常泄漏?如果不是,它可能只是字符串concat,因为我猜这个drawScore()是每帧完成的?试着改用StringBuilder,看看它是否有所改进。如果没有,我们需要查看AssetLoader.shadow.draw()和AssetLoader.font.draw(),您是如何确定存在漏洞的?你是说GC在这里是活动的吗?看来Korpen是正确的,是concat产生了我上面描述的效果。我将尝试使用StringBuilder重做它。谢谢可能是任何东西…可能您在某个时候处理了Assets manager,或者Assets manager是静态的,这可能会导致Android lifecyle出现问题。也许你加载的字体不正确。你能给我们提供更多的代码吗?它是否经常泄漏?如果不是,它可能只是字符串concat,因为我猜这个drawScore()是每帧完成的?试着改用StringBuilder,看看它是否有所改进。如果没有,我们需要查看AssetLoader.shadow.draw()和AssetLoader.font.draw(),您是如何确定存在漏洞的?你是说GC在这里是活动的吗?看来Korpen是正确的,是concat产生了我上面描述的效果。我将尝试使用StringBuilder重做它。谢谢