flutter_boost icon indicating copy to clipboard operation
flutter_boost copied to clipboard

4.2.0版本app首次安装启动进入flutter页面卡住

Open yyzl0418 opened this issue 3 years ago • 33 comments

4.2.0版本app首次安装启动进入flutter页面卡住,杀死进程重新就没事了,降级4.0.4版本可以解决卡住的问题,但是又出现flutterFragment盖住natvieFragment的问题

yyzl0418 avatar Jan 09 '23 03:01 yyzl0418

我也遇到类似问题了,4.2.0版本首次安装从原生进入FlutterBoostFragment页面,flutter页面卡死,杀死重新进入就没问题

sybil052 avatar Jan 10 '23 02:01 sybil052

对我结合flutter_screen_utils 用也是这种情况,

static Future ensureScreenSize([ FlutterWindow? window, Duration duration = const Duration(milliseconds: 10), ]) async { final binding = WidgetsFlutterBinding.ensureInitialized(); window ??= binding.window;

if (window.viewConfiguration.geometry.isEmpty) {
  return Future.delayed(duration, () async {
    binding.deferFirstFrame();
    await ensureScreenSize(window, duration);
    return binding.allowFirstFrame();
  });
}

} 最终是这里出问题 window.viewConfiguration.geometry.isEmpty 这个一直为空

tang5011235 avatar Jan 31 '23 01:01 tang5011235

对我结合flutter_screen_utils 用也是这种情况,

static Future ensureScreenSize([ FlutterWindow? window, Duration duration = const Duration(milliseconds: 10), ]) async { final binding = WidgetsFlutterBinding.ensureInitialized(); window ??= binding.window;

if (window.viewConfiguration.geometry.isEmpty) {
  return Future.delayed(duration, () async {
    binding.deferFirstFrame();
    await ensureScreenSize(window, duration);
    return binding.allowFirstFrame();
  });
}

} 最终是这里出问题 window.viewConfiguration.geometry.isEmpty 这个一直为空

我也碰到了这问题,兄弟你有找到解决方案吗

xuqinzz avatar Feb 10 '23 08:02 xuqinzz

碰到了同样的问题,目前降级到4.0.4版本凑活用

1mf2 avatar Feb 15 '23 06:02 1mf2

同样遇到这个问题了

cuocuo avatar Mar 02 '23 02:03 cuocuo

是否有能够复现的Demo可以提供?

joechan-cq avatar Mar 03 '23 09:03 joechan-cq

是否有能够复现的Demo可以提供? release包,用4.2.0版本,flutter 3.0.5版本测试必现,首次安装页面卡住,主要是不能滑动,可以响应点击事件

yyzl0418 avatar Mar 03 '23 09:03 yyzl0418

不能滑动,能响应点击事件,有点像 #1783 中的现象。估计是FlutterEngine渲染的Surface没绑上,或者被解绑了。

joechan-cq avatar Mar 03 '23 09:03 joechan-cq

不能滑动,能响应点击事件,有点像 #1783 中的现象。估计是FlutterEngine渲染的Surface没绑上,或者被解绑了。

我目前是把`changeFlutterAppLifecycle(FLUTTER_APP_STATE_RESUMED);和 changeFlutterAppLifecycle(FLUTTER_APP_STATE_PAUSED);注释了暂时没问题

yyzl0418 avatar Mar 03 '23 10:03 yyzl0418

我用4.2的FB+3.0.5的Flutter,在3台设备上卸载了再安装,跑Debug、Release包,都没能复现问题。

joechan-cq avatar Mar 06 '23 03:03 joechan-cq

我也出现了

Roger110 avatar Mar 29 '23 06:03 Roger110

我也出现了

@Roger110 是否有能重现的Demo提供?

joechan-cq avatar Mar 29 '23 07:03 joechan-cq

我也出现了

@Roger110 是否有能重现的Demo提供?

是在项目里面,demo不好抽出来

Roger110 avatar Mar 29 '23 07:03 Roger110

@Roger110 能否修改flutter_boost的example项目,然后重现?感觉上像是和初始化调用顺序有关。

joechan-cq avatar Mar 29 '23 08:03 joechan-cq

+1 望修复

sth0409 avatar Apr 03 '23 09:04 sth0409

@Roger110 能否修改flutter_boost的example项目,然后重现?感觉上像是和初始化调用顺序有关。

深入代码看了下,发现是帧调度的问题,app首次启动finish页面的onstop方法比新开启页面的onstart方法后执行了,导致页面出现假死情况,自己重写帧调度解决了

yyzl0418 avatar Apr 03 '23 09:04 yyzl0418

不能滑动,能响应点击事件,有点像 #1783 中的现象。估计是FlutterEngine渲染的Surface没绑上,或者被解绑了。

我目前是把`changeFlutterAppLifecycle(FLUTTER_APP_STATE_RESUMED);和 changeFlutterAppLifecycle(FLUTTER_APP_STATE_PAUSED);注释了暂时没问题

目前用这个方法处理了一下,似乎正常了

sth0409 avatar Apr 03 '23 09:04 sth0409

不能滑动,能响应点击事件,有点像 #1783 中的现象。估计是FlutterEngine渲染的Surface没绑上,或者被解绑了。

我目前是把`changeFlutterAppLifecycle(FLUTTER_APP_STATE_RESUMED);和 changeFlutterAppLifecycle(FLUTTER_APP_STATE_PAUSED);注释了暂时没问题

目前用这个方法处理了一下,似乎正常了

这个只能解决假死问题,前后台切换残影闪烁的问题就会出现

yyzl0418 avatar Apr 03 '23 09:04 yyzl0418

不能滑动,能响应点击事件,有点像 #1783 中的现象。估计是FlutterEngine渲染的Surface没绑上,或者被解绑了。

我目前是把`changeFlutterAppLifecycle(FLUTTER_APP_STATE_RESUMED);和 changeFlutterAppLifecycle(FLUTTER_APP_STATE_PAUSED);注释了暂时没问题

目前用这个方法处理了一下,似乎正常了

这个只能解决假死问题,前后台切换残影闪烁的问题就会出现

有更好的解决方案吗?看了你楼上的回复,查了一下Flutter帧调度的资料,没太看懂

sth0409 avatar Apr 03 '23 10:04 sth0409

可以

具体可以看看这个 https://github.com/alibaba/flutter_boost/issues/1740

yyzl0418 avatar Apr 03 '23 10:04 yyzl0418

4.2.2也是同样的问题

wangxiongtao avatar Apr 19 '23 11:04 wangxiongtao

@cuocuo @joechan-cq @sybil052 @tang5011235 @Roger110 @wangxiongtao

这个提交导致页面卡主问题,临时注释掉就好了

https://github.com/alibaba/flutter_boost/pull/1724

1mf2 avatar May 29 '23 06:05 1mf2

@cuocuo @joechan-cq @sybil052 @tang5011235 @Roger110 @wangxiongtao

这个提交导致页面卡主问题,临时注释掉就好了

#1724

能提个新版本解决这个问题么

Roger110 avatar May 29 '23 06:05 Roger110

@cuocuo @joechan-cq @sybil052 @tang5011235 @Roger110 @wangxiongtao 这个提交导致页面卡主问题,临时注释掉就好了 #1724

能提个新版本解决这个问题么

可以fork一下,然后自己修改,项目里引用自己的github仓库地址

sth0409 avatar May 29 '23 06:05 sth0409

我还是看不出1724中的修改对这个问题的影响。1724中的修改,只会在onForeground和onBackground的时候触发。app启动后,如果不是直接就进入flutter页面,或者出现第一个NativeActivity先onStop,Flutter的Activity再onStart的异常情况,就并不会触发changeFlutterAppLifecycle的代码。第一次进入Flutter正常应该都是依靠FlutterBoostPlugin.onContainerCreated去发送的onResume事件。 所以,是否可以打日志检查一下BoostActivityLifecycle中的生命周期的执行情况。

joechan-cq avatar May 30 '23 04:05 joechan-cq

你们是不是都对FlutterBoost做了延迟初始化?#1742 如果做了延迟初始化,又没有自行接管ActivityLifecycleCallbacks 那的确会出现问题。参考#1652

joechan-cq avatar May 31 '23 01:05 joechan-cq

刚才实验了一下,应该是延迟初始化导致,因为现在这些隐私限制,首次启动用户没有同意协议的时候不能跑流量; FlutterBoost在application中初始化时会跑流量,在首次启动的时候是在用户点击同意之后再进行初始化的引擎; 放到application中初始化就好了,但是会导致首次启动跑流量问题

1mf2 avatar May 31 '23 03:05 1mf2

刚才实验了一下,应该是延迟初始化导致,因为现在这些隐私限制,首次启动用户没有同意协议的时候不能跑流量; FlutterBoost在application中初始化时会跑流量,在首次启动的时候是在用户点击同意之后再进行初始化的引擎; 放到application中初始化就好了,但是会导致首次启动跑流量问题

但是4.0.4是没有这个问题的

Roger110 avatar May 31 '23 03:05 Roger110

刚才实验了一下,应该是延迟初始化导致,因为现在这些隐私限制,首次启动用户没有同意协议的时候不能跑流量; FlutterBoost在application中初始化时会跑流量,在首次启动的时候是在用户点击同意之后再进行初始化的引擎; 放到application中初始化就好了,但是会导致首次启动跑流量问题

但是4.0.4是没有这个问题的

4.0.4并没有onForegroundonBackground的处理,所以正常的。卡住是因为多触发了onBackground里的pause。

joechan-cq avatar May 31 '23 05:05 joechan-cq

@1mf2 引擎可以延迟初始化,只要自行接管AppLifecycleCallback就可以了。

joechan-cq avatar May 31 '23 05:05 joechan-cq