我有一个 Android 应用程序正在处理设备相机。在代码中,onPreviewFrame 函数永远循环,并在每个信号循环中创建一个新的 YuvImage 实例。最后在循环中实例设置为空,因此系统垃圾收集器可以释放分配的内存。
这在 Android 4.1 中完美运行,但在 3.2 中却不行。在 Android 3.2 操作系统中,此应用程序分配的内存越来越多,最终内存不足。
怎么了?
oPreview.oCamera.setPreviewCallbackWithBuffer( new Camera.PreviewCallback()
{
public synchronized void onPreviewFrame( byte[] bData, Camera oCamera)
{
...
YuvImage oYuv_image = new YuvImage( bData, iFormat, iW, iH, null);
...
oYuv_image = null;
}
}