java.lang.RuntimeException: Camera is being used after Camera.release() was called
错误就是上述这个错误,错误出现在Android相机开发中,我所实现的方法贴一下:
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (!isOpenCamera)
return;
mCamera.setPreviewCallback(null);
mCamera.stopPreview();
mCamera.lock();
mCamera.release();
mCamera = null;
}
乍一看没啥错误,但是这个错误会在不经意间蹦出来影响应用的运行,直接就AAR了.所以为了解决这个错误,需要在camera调用setPreviewCallback之前加上一句代码,加完代码后的方法为:
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (!isOpenCamera)
return;
holder.removeCallback(this);
mCamera.setPreviewCallback(null);
mCamera.stopPreview();
mCamera.lock();
mCamera.release();
mCamera = null;
}
到此我的问题已经解决,但是我正在想为什么这么做?
本文解决了Android相机开发中出现的“CameraisbeingusedafterCamera.release()wascalled”异常问题。通过在surfaceDestroyed方法中加入holder.removeCallback(this)代码行,避免了因预览回调未正确移除而导致的异常释放错误。
8804

被折叠的 条评论
为什么被折叠?



