位图变为空

时间:2014-02-02 03:27:17

标签: android canvas bitmap

首先我创建一个新的位图

Bitmap image = BitmapFactory.decodeResource(Game.panel.context.getResources(),R.drawable.dinofront)

然后我拉伸图像,之后我检查位图是否为空,它不是

image = Bitmap.createScaledBitmap(image, Game.tileWidth, Game.tileHeight, false);

稍后在draw()方法中,在我对位图执行任何操作之前,我再次检查它现在为空。有谁知道为什么会这样?我有什么特别的事要做,我不知道了吗?

全班:http://pastebin.com/t95MVvv0

2 个答案:

答案 0 :(得分:0)

我可以想到两个可能的原因:

  1. 可能只是代码的其他部分可能会更改图像变量
  2. 线程同步 - 请记住,代码可能不会按照Java源代码中指定的顺序执行,但可以按照JVM认为合适的顺序重新排序,includes assigning the instance variable before the constructor is run。当您在构造函数中执行非常耗时的Bitmap操作时,尤其如此,并且我假设您的对象创建代码与绘图代码位于不同的线程上。要检查这种可能性,您可以声明一个volatile布尔变量,该变量仅在构造函数完成时设置为true,并在draw()方法中检查其值

答案 1 :(得分:0)

哇,我觉得自己很蠢。因为当我调用image = Bitmap.create时,有类的图像和构造函数引入的图像...它只是设置构造函数的图像而不是this.image所以如果我将它更改为this.image = ......一切正常