使用Bitmaps的最佳方式

时间:2013-11-18 12:07:05

标签: java android bitmap garbage-collection

我正在为相机拍摄的每个预览帧使用Bitmaps,如下所示:

int[] buffer = ...;
decodeYUV420SP(buffer, data, width, height);
Bitmap bitmap = Bitmap.createBitmap(buffer, width, height, Bitmap.Config.RGB_565);

data是来自onPreviewFrame的缓冲区 (我这样做的原因是解决方法this bug,关闭为“不会修复”)。到目前为止一切都很好。

现在在android 2.3.3中,我知道我可以简单地调用bitmap.recycle来释放已分配的内存以减少GC时间。从API级别11(android 3.0)开始,策略has changedbitmap.recycle调用什么都不做。相反,它建议使用BitmapFactory.Options指定要加载图像的位图。但它仅 用于从流中读取压缩图像,上面的Bitmap.createBitmap不接受BitmapFactory.Options实例。 Bitmap.setPixels确实接受颜色数组,但是采用其他格式,并且解码不清楚。

我可能错了,但我没有看到以任何方式在Android 3.0中有效地创建具有颜色缓冲区的Bitmap。始终会创建一个新的重型实例,并且无法回收。

我很高兴知道这项任务可以有效完成。

0 个答案:

没有答案
相关问题