重新初始化回收位图 Android

Reinitialize recycled Bitmap Android

我想做的是在回收位图后重新使用它。为此,我知道我必须再次初始化 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() 初始化这个位图,如下所示:

bm = BitmapFactory.decodeFile(url);

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

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

您正在使用 map 对象,它是一个回收的位图,您不能使用回收的位图创建新的位图,请务必在调用 Bitmap.createBitmap(map, ...) 之前正确初始化它,否则不要在您使用完代码之前不要在代码中的某处调用 map.recycle()