flutter_boost
flutter_boost copied to clipboard
Android 从Flutter A页面 进入 原生B页面 返回FlutterA 重复 2-3次 返回Flutter A时 出现 白屏
Steps to Reproduce
A small application to reproduce the bug(最小化可复现的demo)
- Android 从Flutter A页面 进入 原生B页面
- 返回FlutterA 页面
- 重复步骤1,步骤2, 2-3次 返回Flutter A时 出现 白屏
Flutter Boost Version: 4.2.0 Target Platform: 华为 COL-AL10 Emui 9.1.0 Target OS version: Android 9 Devices:
Logs
add your crash log or something else.
https://user-images.githubusercontent.com/14247330/227865688-6a5caaee-20d6-416c-bd0f-dfcb52d138b8.mp4
我也出现了这个问题,也是升级上来才发现的,然后我目前的信息是不是重复两三次,而是在你上面描述的页面A的页面的onStop执行之前就点了返回,就会出现这个情况,更加具体的原因还在查。
@shanhaojie 找到最终原因了么?
@shanhaojie 顺便你看下是不是手碰下屏幕,返回A后内容就又渲染出来了
我目前找到了大致的原因,具体原因还没找到,你可以参考下,看看你那边是否也能按照我说的方式临时解决,但是这样我不知道是否会引来别的问题,因为新版的FlutterBoost源码我还没完整看完。
FlutterBoostActivity中覆写了FlutterActivity的getRenderMode方法,直接写死了使用TextureView,我这边因为别的问题的bugfix,本来就会再继承一次FlutterBoostActivity,所以我直接在我的子类里再次覆写getRenderMode,换成了FlutterActivity的默认实现,根据设置的BackgroundMode来决定是使用SurfaceView还是TextureView,在初始化时设置BackgroundMode.opaque,换成SurfaceView后就不会产生此问题,如果你这么做了跟我的结果一样,可以回复下我。
override fun getRenderMode(): RenderMode { return if (backgroundMode == BackgroundMode.opaque) RenderMode.surface else RenderMode.texture }
我目前找到了大致的原因,具体原因还没找到,你可以参考下,看看你那边是否也能按照我说的方式临时解决,但是这样我不知道是否会引来别的问题,因为新版的FlutterBoost源码我还没完整看完。 FlutterBoostActivity中覆写了FlutterActivity的getRenderMode方法,直接写死了使用TextureView,我这边因为别的问题的bugfix,本来就会再继承一次FlutterBoostActivity,所以我直接在我的子类里再次覆写getRenderMode,换成了FlutterActivity的默认实现,根据设置的BackgroundMode来决定是使用SurfaceView还是TextureView,在初始化时设置BackgroundMode.opaque,换成SurfaceView后就不会产生此问题,如果你这么做了跟我的结果一样,可以回复下我。
override fun getRenderMode(): RenderMode { return if (backgroundMode == BackgroundMode.opaque) RenderMode.surface else RenderMode.texture }
我也遇到了,按照上文所说,还是没有解决,不过我发现在push时执行pop就会出现