flutter_boost icon indicating copy to clipboard operation
flutter_boost copied to clipboard

Android 从Flutter A页面 进入 原生B页面 返回FlutterA 重复 2-3次 返回Flutter A时 出现 白屏

Open shanhaojie opened this issue 1 year ago • 8 comments

Steps to Reproduce

A small application to reproduce the bug(最小化可复现的demo)

  1. Android 从Flutter A页面 进入 原生B页面
  2. 返回FlutterA 页面
  3. 重复步骤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.

a1.txt

https://user-images.githubusercontent.com/14247330/227865688-6a5caaee-20d6-416c-bd0f-dfcb52d138b8.mp4

shanhaojie avatar Mar 27 '23 07:03 shanhaojie

我也出现了这个问题,也是升级上来才发现的,然后我目前的信息是不是重复两三次,而是在你上面描述的页面A的页面的onStop执行之前就点了返回,就会出现这个情况,更加具体的原因还在查。

DaiXiaojie avatar Mar 27 '23 07:03 DaiXiaojie

@shanhaojie 找到最终原因了么?

DaiXiaojie avatar Mar 27 '23 12:03 DaiXiaojie

@shanhaojie 顺便你看下是不是手碰下屏幕,返回A后内容就又渲染出来了

DaiXiaojie avatar Mar 27 '23 13:03 DaiXiaojie

我目前找到了大致的原因,具体原因还没找到,你可以参考下,看看你那边是否也能按照我说的方式临时解决,但是这样我不知道是否会引来别的问题,因为新版的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 }

DaiXiaojie avatar Mar 28 '23 07:03 DaiXiaojie

我目前找到了大致的原因,具体原因还没找到,你可以参考下,看看你那边是否也能按照我说的方式临时解决,但是这样我不知道是否会引来别的问题,因为新版的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就会出现

Moyuchen avatar Jan 09 '24 10:01 Moyuchen