【发布时间】:2016-07-16 10:55:51
【问题描述】:
您好,我正在创建 Bitmap 对象并在画布中使用,如下代码所示
Bitmap result = Bitmap.createBitmap(loadedImage.getWidth(), loadedImage.getHeight(), Config.ARGB_8888);
Canvas mCanvas = new Canvas(result);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
mCanvas.drawBitmap(blurBitmap, 0, 0, null);
mCanvas.drawBitmap(loadedImage, 0, 0, paint);
paint.setXfermode(null);
ivBlur.setImageBitmap(result);
// now i don't want Bitmap "result" so I am recycling it
if (result != null && !result.isRecycled())
result.recycle();
}
但是从上面的代码中我得到了一个类似的错误
尝试使用回收的位图android
How to fix "canvas: trying to use a recycled bitmap error"?
trying to use a recycled bitmap android.graphics.Bitmap
Canvas: trying to use a recycled bitmap android.graphics.Bitmap in android
如果我不写最后三行,那就完美了, 可能是因为 Canvas 使用的是位图“结果”对象,而我正在回收“结果”
由于这个位图占用空间很大,我必须回收这个位图,否则我会得到
java.lang.OutofMemoryError:位图大小超出 VM 预算。
那么有谁知道我怎么能得到这个,“Canvas 已经使用了位图对象,现在我可以回收结果对象了”。
【问题讨论】:
标签: android android-canvas android-bitmap