2010-11-25 4 views
2

私はキャンバスに多くのものをペイントする別のスレッドでタイトなゲームループを持っています。整数をキャンバスに素早く印刷し、ガベージコレクトなしで

私は次の関数を使用してキャンバスにスコアを描く場合:

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

IはDDMS内の割り当てをチェックすると、私は全く驚くない.toStringが整数から各変換に文字列を割り当てることがわかり文字列。この配列は最終的にガベージコレクトによって主張され、遅いアンドロイドデバイス上のフレームの不均一なレンダリングを引き起こします。

新しい割り当てやガベージコレクションを引き起こさない整数をキャンバスにペイントするより良い方法がありますか?

答えて

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

ありがとうございます、これは魅力的でした。 –

関連する問題