我在我的Libgdx Android游戏中遇到了一个小问题。当我更改屏幕时,动画会在新屏幕创建后立即启动。它在桌面上运行的很好,很流畅,但是当我在android设备上运行时,当新屏幕创建时,就会出现滞后现象,看起来就像跳过了几帧动画。
经过一些调查后,我发现这是因为创建新屏幕会调用许多要创建的新图像和其他对象,因此GC_FOR_ALLOC被多次调用:
04-23 20:26:11.411: D/dalvikvm(18461): GC_FOR_ALLOC freed 385K, 48% free 8809K/16880K, paused 12ms, total 12ms
04-23 20:26:11.531: D/dalvikvm(18461): GC_FOR_ALLOC freed 454K, 48% free 8867K/16880K, paused 12ms, total 12ms
04-23 20:26:11.651: D/dalvikvm(18461): GC_FOR_ALLOC freed 475K, 48% free 8903K/16880K, paused 13ms, total 13ms
04-23 20:26:11.746: D/dalvikvm(18461): GC_FOR_ALLOC freed 473K, 48% free 8942K/16880K, paused 12ms, total 13ms
04-23 20:26:11.856: D/dalvikvm(18461): GC_FOR_ALLOC freed 481K, 47% free 8967K/16880K, paused 12ms, total 12ms,所以我的问题是:,我可以让我的应用程序等待这些操作完成,然后才启动动画吗?
事实上,我需要获得垃圾收集器状态的能力,这样我就可以在gc完成其分配操作之后启动动画。
提前感谢您的帮助!
发布于 2016-04-23 19:43:04
我不知道Libgdx,但我看到它有一个Gdx.graphics.getFramesPerSecond()方法,所以也许您可以启动您的动画只有当FPS稳定。如果该方法花了很长时间才能给出一个合适的平均值,也许您可以从getRawDeltaTime()开始测量您自己的FPS。
发布于 2016-04-23 18:02:47
https://stackoverflow.com/questions/36814293
复制相似问题