当我实现canvas.drawBitmap方法时,如何避免内存泄漏?

时间:2015-03-19 05:18:53

标签: java android canvas memory-leaks bitmap

我正在使用canvas.drawBitmap方法。它导致应用程序在随机出现时抛出nullpointerexceptions。有没有办法实现它,以便绘图将正确呈现? 我正在创建一个由单元组成的板。并且单元格包含图像应该位于的像素坐标。但是,如上所述,并非所有图像都显示出来。 我收到错误,特别是canvas.drawBitmap(bitmap, srcRect, dstRect, paint)

ERROR:

03-18 13:46:21.615  22880-22932/com.example.sam.matrix E/AndroidRuntime﹕ FATAL EXCEPTION: Game Thread
    Process: com.example.sam.matrix, PID: 22880
    java.lang.NullPointerException
            at com.example.sam.matrix.framework.util.Painter.drawImage(Painter.java:54)
            at com.example.sam.matrix.game.state.PlayState.renderCell(PlayState.java:74)
            at com.example.sam.matrix.game.state.PlayState.renderBoard(PlayState.java:48)
            at com.example.sam.matrix.game.state.PlayState.render(PlayState.java:38)
            at com.example.sam.matrix.main.GameView.updateAndRender(GameView.java:109)
            at com.example.sam.matrix.main.GameView.run(GameView.java:130)
            at java.lang.Thread.run(Thread.java:841)

1 个答案:

答案 0 :(得分:1)

我建议您调试此行 - > canvas.drawBitmap(bitmap, null, dstRect, paint);找出什么是null。我可以看到你初始化了dstRectpaint,所以我不认为那些会出现空指针问题。要调试它,您可以执行以下操作:

if (canvas == null) {
    Log.i("canvas", "canvas is null");
}

if (bitmap == null) {
    Log.i("bitmap", "bitmap is null");
}

canvas.drawBitmap(bitmap, null, dstRect, paint);

那应该告诉你导致空指针异常的原因。

如果有帮助,请告诉我。