Camera is being used after Camera.release() was called
程序员文章站
2022-06-15 13:56:19
...
@Override
protected void onDestroy() {
super.onDestroy();
if (camera!=null){
camera.stopPreview();
camera.release();
camera = null;
}
}
报错原因 :
回调onDestroy()的时候,PreviewCallback接口onPreviewFrame方法还在不停调用,
具体调用频率就是当前预览的FrameRate,当onDestroy()执行完camera.release()时,
onPreviewFrame再次被调用时就出现了该异常。
解决办法:
if (camera!=null){
camera.stopPreview();
camera.setPreviewCallback(null);
camera.release();
camera = null;
}
在onDestroy()里面调用camera.release()之前,先调用一次camera.setPreviewCallback(null); ,这样在执行完camera.release(),因为指定的PreviewCallback为null,因而就不会再调用onPreviewFrame,进而也不会再引用到camera和调用到其任何方法。
注:
onPreviewFrame第二个参数引用了camera。
应根据自己的release时机调用setPreviewCallback(null),例子是在OnDestroy中调用。
上一篇: 获取DOM尺寸
下一篇: jQuery获取元素尺寸