gpt4 book ai didi

java - 实现 canvas.drawBitmap 方法时如何避免内存泄漏?

转载 作者:行者123 更新时间:2023-11-30 02:17:00 24 4
gpt4 key购买 nike

我经常使用 canvas.drawBitmap 方法。它会导致应用程序在随机发生时抛出空指针异常。有没有办法实现它,使绘图能够正确呈现?我正在创建一个由单元组成的板。单元格由图像所在位置的像素坐标组成。然而,如上所述,并不是所有的图像都被显示出来。我收到一个错误,特别是在 canvas.drawBitmap(bitmap, srcRect, dstRect, paint) 上。

错误:

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)

最佳答案

我建议你调试这一行 --> 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);

这应该告诉您是什么导致了空指针异常。

如果这有帮助,请告诉我。

关于java - 实现 canvas.drawBitmap 方法时如何避免内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29137674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com