快速打印整数到画布,没有垃圾收集

时间:2010-11-25 11:10:46

标签: java android

我在一个单独的线程中有一个严格的游戏循环,我在画布上画了很多东西。

当我将分数绘制到画布时,我使用以下函数:

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

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

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

1 个答案:

答案 0 :(得分:1)

使用这种简单的转换器方法重用相同的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编码。