gpt4 book ai didi

java - 将整数快速打印到 Canvas 上且没有垃圾收集

转载 作者:行者123 更新时间:2023-11-30 11:56:42 25 4
gpt4 key购买 nike

我在一个单独的线程中有一个紧密的游戏循环,我在 Canvas 上绘制了很多东西。

当我将乐谱绘制到 Canvas 时,我使用以下函数:

public void clearAndDraw(Canvas canvas, Integer score) {
canvas.drawText(score.toString(), middleOfScreen, textYPosition, paint);

当我检查 ddms 中的分配时,我发现 .toString 在每次从 Integer 到 String 的转换时分配一个 char 数组并不奇怪。该数组最终将被垃圾收集器占用,并导致在慢速 Android 设备上帧的渲染不均匀。

有没有更好的方法在 Canvas 上绘制整数,不会导致新的分配和垃圾收集?

最佳答案

使用这个重用相同 char[] 的简单转换器方法:

private static void intToChar(char[] array, int input) {
int i = array.length - 1;
while (input > 0 && i >= 0) {
array[i--] = (char) (48 + input % 10);
input /= 10;
}
}

确保您传递的 char[] 足够大以适合给定的整数。这也假定 ASCII 编码。

关于java - 将整数快速打印到 Canvas 上且没有垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4276346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com