Open
Description
请描述遇到的问题,以及您所期望的正确的结果
使用AndroidNativeView
进行视频渲染的界面,在从二级页回退回来时,出现渲染卡住的情况,刷屏报如下错误:
ImageReader dequeueBuffer: BufferQueue has been abandoned
请说明如何操作会遇到上述问题
No response
在下面填入关键复现代码
复现的平台
Android
Flutter SDK版本
3.22.2
FlutterBoost版本
5.0.2
是否延迟初始化FlutterBoost
No
解决方案
原因是Flutter 3.22.2
版本开始,FlutterActivityAndFragmentDelegate.java
文件的onStop
方法中,新增了如下的代码

新增的onTrimMemory
会使得导致渲染NativeView用的PerImageReader
调用close
。
这个onStop
是绑定FlutterActivity的onStop
触发的,因此在FlutterBoost
的场景下,一级页面中有AndroidNativeView时,从二级页面返回时,因为先触发一级页面的onResume
,后触发二级页面的onStop
,就导致后面的onStop
把一级页面渲染用的PerImageReader
给close
了,所以出现了问题。
临时解决方案:设置
FlutterRenderer.debugForceSurfaceProducerGlTextures = true;
这个会把NativeView的渲染从ImageReaderSurfaceProducer
改回SurfaceTextureSurfaceProducer
,相当于使用老版本的方案。