Android Java:游戏中的高效重绘位图?

Android Java:游戏中的高效重绘位图?,java,android,memory-management,Java,Android,Memory Management,我在游戏循环中获得分配,因为我对16帧位图动画的每一帧使用Bitmap.createBitmap,如下所示: Bitmap bitmap = new Bitmap; public init(){ for(int j=0;j<16;j++) { Bitmap pick2 = BitmapFactory.decodeResource(getResources(), getResources().getIdentifier("walk"+j, "drawable", p

我在游戏循环中获得分配,因为我对16帧位图动画的每一帧使用Bitmap.createBitmap,如下所示:

Bitmap bitmap = new Bitmap;

public init(){
for(int j=0;j<16;j++)
    {
        Bitmap pick2 = BitmapFactory.decodeResource(getResources(), getResources().getIdentifier("walk"+j, "drawable", packageName), shipOptions);

        walkArray.add(pick2);
    }
}

onDraw(Canvas canvas)
{
    super.onDraw(canvas);
    canvas.drawBitmap(bitmap);
}

final Runnable walkData = new Runnable()
{
    public void run(){
        try{    
        if(walkAnim==true)
            {
                bitmap = Bitmap.createBitmap(walkArray.get(walkNum), 0, 0, walkArray.get(walkNum).getWidth(), walkArray.get(walkNum).getHeight(), matrix, true);
                walkNum++;
                if(walkNum>15)
                {
                    walkNum=0;
                }
                invalidate();
            }
            if(walkAnim==false)
            {
                bitmap = Bitmap.createBitmap(pick, 0, 0, pick.getWidth(),
                        pick.getHeight(), matrix, true);
            }

        handler.postDelayed(this, 50);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
};

我不太担心runnable调用的速度,我更担心的是分配的大小会达到300kb。有什么方法可以优化这段代码吗?我希望尽可能避免使用ImageView和canvsas。

我仍在努力理解位图缓存和高效的位图绘制。如果有人能给我指出正确的方向,这将对我有很大帮助:我发现这段视频非常有用,如果有人读过这段视频: