重新初始化回收的Bitmap Android

时间:2017-06-12 18:43:39

标签: android canvas bitmap recycle

我尝试做的是在回收后重复使用Bitmap。为此,我知道我必须再次初始化de Bitmap,我在调用recycle()之后这样做:

mapBitmap = Bitmap.createBitmap(map, 0, 0, map.getWidth(), map.getHeight());

但是当我尝试使用它时,我得到了

06-12 20:41:01.628 615-1470/com.example.project W/System.err: java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@5f1fba3

顺便说一下,我有另一个Bitmap,我必须回收并稍后使用,但是这个有效,它们之间的唯一区别是我使用decodeFile()初始化这个,如下所示: / p>

bm = BitmapFactory.decodeFile(url);

1 个答案:

答案 0 :(得分:0)

您的问题是您使用回收的Bitmap初始化另一个。 在这一行:

mapBitmap = Bitmap.createBitmap(map, 0, 0, map.getWidth(), map.getHeight());

您使用的是map对象,这是一个recyled Bitmap,并且您无法使用回收的Bitmap创建新的Bitmap,请务必在调用Bitmap.createBitmap(map, ...)之前正确初始化它在使用完之前,请在代码中的某处调用map.recycle()