アプリケーションで特定の画像を移動するシステムをセットアップしましたが、postInvalidate()
呼び出しによって大量のヒープ スペースが発生しているようです。
private class update extends TimerTask {
@Override
public void run() {
long timestamp = System.currentTimeMillis() - prevTime;
prevTime = System.currentTimeMillis();
speed += (speedIncrease / 5 * timestamp);
location.y += (int) (speed / 5 * timestamp);
if (location.y >= targetY) {
location.y = targetY;
falling = false;
super.cancel();
}
screen.redraw();
}
}
は私のコードで、timer.schedule
5 ミリ秒ごとに呼び出されます。はビューscreen.redraw()
で a を呼び出しpostInvalidate()
ます。
私が取得しているエラーログの一部:
05-27 07:53:05.711: I/dalvikvm-heap(9805): Grow heap (frag case) to 8.875MB for 1536016-byte allocation
05-27 07:53:05.791: D/dalvikvm(9805): GC_CONCURRENT freed 12K, 21% free 8978K/11335K, paused 2ms+12ms
05-27 07:53:05.861: D/dalvikvm(9805): GC_FOR_ALLOC freed 1501K, 34% free 7490K/11335K, paused 19ms
05-27 07:53:05.861: I/dalvikvm-heap(9805): Grow heap (frag case) to 8.875MB for 1536016-byte allocation
05-27 07:53:05.941: D/dalvikvm(9805): GC_CONCURRENT freed 12K, 21% free 8978K/11335K, paused 2ms+2ms
05-27 07:53:06.011: D/dalvikvm(9805): GC_FOR_ALLOC freed 1501K, 34% free 7490K/11335K, paused 19ms
05-27 07:53:06.011: I/dalvikvm-heap(9805): Grow heap (frag case) to 8.875MB for 1536016-byte allocation
05-27 07:53:06.111: D/dalvikvm(9805): GC_CONCURRENT freed 12K, 21% free 8978K/11335K, paused 2ms+3ms
05-27 07:53:06.221: D/dalvikvm(9805): GC_FOR_ALLOC freed 1502K, 34% free 7490K/11335K, paused 19ms
ここで何が欠けているのか、何が間違っているのかわかりません。何か案は?
ありがとう。
編集:
私はすでに問題を発見しました.drawメソッドで誤って背景をロードしました. ここで示したコードにより、draw メソッドが呼び出されたため、画像が何度も読み込まれました。