2010-11-25 58 views
2

我在一个单独的线程中有一个紧密的游戏循环,我在画布上绘制了很多东西。打印整数到画布快而没有垃圾收集

当我油漆比分到我使用下面的函数画布:

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

当我在我DDMS看到检查分配那个的ToString不是完全令人吃惊从整数到分配在每个转换字符数组一个字符串。这个数组最终将被垃圾收集声明,并导致缓慢的Android设备帧的不均匀渲染。

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

回答

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编码。

+0

谢谢,这工作像一个魅力。 – 2010-11-25 15:41:06