Camera kit 双路预览方案实现视频数据回调,频繁(间隔1秒,开关20次以内)开关相机底层崩溃。
分析崩溃日志显示,崩溃在系统底层的 ImageReceiverNapi::DoCallBack 。后来注释了receiver.on('imageArrival') 回调后,频繁开关相机不会崩溃。
Camera kit 双路预览方案实现视频数据回调,频繁(间隔1秒,开关20次以内)开关相机底层崩溃。
分析崩溃日志显示,崩溃在系统底层的 ImageReceiverNapi::DoCallBack 。后来注释了receiver.on('imageArrival') 回调后,频繁开关相机不会崩溃。
在HarmonyOS开发中,使用Camera Kit进行双路预览并频繁开关相机时遇到的系统底层崩溃问题,很可能是由于在频繁切换相机状态时,回调处理不当或系统资源未能及时释放/重新分配所导致的。
优化回调处理:
on('imageArrival')
的回调频率,或者在不需要实时处理每一帧图像时暂时禁用此回调。资源管理:
onPageShow
和onPageHide
)来管理相机的开启和关闭,确保在页面不可见时相机被正确关闭。错误处理:
代码审查:
系统兼容性:
联系技术支持:
cameraDevice.release()
。on('imageArrival')
回调中是否有耗时的操作或内存泄漏。根据你提供的信息,注释掉receiver.on('imageArrival')
回调后不再崩溃,这表明问题可能与该回调的处理方式或频率有关。因此,优化回调处理或确保在不需要时禁用回调是解决问题的关键步骤之一。同时,确保整个相机操作过程中的资源管理和错误处理也是避免崩溃的重要方面。
1 回答646 阅读✓ 已解决
1 回答621 阅读
1 回答611 阅读
1 回答595 阅读
1 回答508 阅读
572 阅读
关相机过程中释放receiver需要同步调用release,否则频繁切换,再次打开相机,因为异步调用的原因,start相机中初始化receiver后才执行stop中receiver的release方法,导致receiver调用时机不对。