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