在主游戏循环中旋转位图而不会在Android中重载GC

时间:2015-04-25 14:24:31

标签: java android bitmap garbage-collection

在主游戏循环中每帧旋转位图的正确方法是什么? 我尝试过:

我每帧都创建了旋转位图:

Bitmap image, tmp;
Matrix m;
...
public void mainGameLoop(Canvas c){
    m.reset();
    m.postRotate(angle);
    tmp = Bitmap.createBitmap(image, 0, 0, width, height, m, true);
    c.drawBitmap(tmp, 50, 50, null);
}

但是,因为Bitmap.createBitmap每帧都会创建位图垃圾收集器如此疯狂地工作,它会导致低FPS。

我尝试在所有角度保存数组中的位图,只是采用我想要的位图。但是,这需要大量的RAM和应用程序无法以高屏幕分辨率启动。

如果您有任何想法,请在下面发表评论。

1 个答案:

答案 0 :(得分:0)

有人认为是这样的:

public static void main(String[] args)
{
    for(int i = 0; i < 10; i++)
    {
        for(int j = 10 - i; j > 0; j = j--)
        {
            System.out.print(j * 10);
            System.out.print(" ");
        }
        System.out.println();
        System.out.println("-----------------");
    }
}