ANDROID如何减少字符串分配

Alb*_*ani 2 android

我已经设法使用DDMS(很棒的工具)将我的分配降到了最低点,这大大减少了我的GC每3分钟大约1或2.尽管如此,我并不高兴,因为当你与它进行互动时,这些通常会导致游戏中的显着延迟(在某些手机上).

使用DDMS,我知道分配是什么,它们是从用于显示游戏信息的整数转换为HUD的字符串.

我基本上是这样做的:

int playerScore = 20929;
String playerScoreText = Integer.toString(playerScore);
canvas.drawText(playerScoreText, xPos, yPos);
Run Code Online (Sandbox Code Playgroud)

一旦每次帧更新并且HUD系统是模块化的,就会发生这种情况,因此我在需要时插入内容,这可能导致4或5个hud元素在DDMS中分配字符串和AbstractStringBuilders.

有什么方法可以进一步减少这些或消除所有String分配并只重用一个String对象?

谢谢,Albert Pucciani

小智 5

阅读你的问题让我想起了很久以前我读过的Robert Greens的一篇文章.它几乎完全相同地讨论了你的问题.http://www.rbgrn.net/content/290-light-racer-20-days-32-33-getting-great-game-performance.跳到第33天开始阅读.


Vit*_*nko 5

记住最后一个int分数及其字符串表示.在新框架上检查分数是否相同.如果相同,则无需创建新字符串 - 只需使用旧字符串即可.