-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
(该问题未完全修复)安卓app进入桌面,返回应用,动画区域会有不停地闪烁出现 #1740
Comments
「我看还有一个场景,还会复现这个问题,没有完全修改。」 —— 呃,具体是什么场景呢?与 #1736 是什么关系? |
问题 单:#1715 但是假如现在有一个首页,同问题 1736, 这个时候,在进行切后台切换,从后台到前台的时候,tab2就会运行, 就会出现假死的现象了。因为tab2现在虽然在前台,但是view其实是隐藏的。所以这个问题就出现假死了。 |
具体视频操作: 切换到邮箱,在动画加载时,切换到聊天,然后快速前后台,触发 changeFlutterAppLifecycle(FLUTTER_APP_STATE_RESUMED); Record_2022-10-14-11-34-15.mp4 |
+1 |
停止帧调度,具体要怎么操作@joechan-cq |
目前并没有直接的方法停止帧调度。之前是通过发送给Flutter “切后台”和“回前台”的事件,来触发 单引擎,一个界面多个FlutterFragment的情况下,很不推荐自己去手动发送前后台事件,一旦弄错,就会导致Flutter的渲染出现异常。 |
#1725 可以问问 @JunhuaLin 这个兄弟,看那个issue,应该是同一个问题,可以问问他有什么办法。 |
那框架可以处理这个问题吗? 但是,如果我是多个 FlutterFragment 的tab,那就没办法了,我其中一个tab onBackground,另一个 onForeground,这 那就只能框架去控制这个准确性,端上就自身控制就乱了,所以框架这边这种情况可以考虑如何处理不? |
你说的,也有考虑,但是 onBackground,是系统的方法,没有针对单个view,有办法单个view的控制? |
@0xZOne 怎么停止当前widget的帧调度, 现在多个 FlutterFragment,不好处理,因为只要有view隐藏的情况下,运行动画,就会出现闪屏。 所以如果我在当前view,执行 onPageHide 的时候,暂停帧调度,onPageShow的时候,在执行帧调度,应该就没这个问题了。 |
你在FlutterBoost代码里搜索一下:changeFlutterAppLifecycle这个函数 |
是暂停整个root isolate的帧调度哈 |
这个闪烁,是不是widget 在隐藏的时候运行,就会出现呢? |
目前收集到的信息是这样的~ |
那有办法对单个widget操作吗?例如控制原生flutterView停止渲染,或者,在flutter页面,在show和hide,暂停整个view的绘制,或者暂停整个页面的动画。 |
打开原生页面前有个加载动画,打开原生页面后关闭动画,在从原生页面返回flutter页面也会有闪烁问题。 |
同样的问题,首次进入页面还是闪动,有解决了的吗 |
相同的问题,在Fragment中添加了代码中说的resume/pause可以解决界面不可见刷新闪动的问题,但是首次进入页面闪动还是有问题,还在闪动,求作者们解决 |
欢迎大家试用Fusion 3.0,彻底解决混合栈框架普遍存在的黑屏、闪屏、白屏等疑难杂症 |
你好牛,我们团队已经解决了这个问题,这单可以关了 |
同样遇到闪,各位怎么解决呢 @mosentest @marchlqq @0xZOne |
请问你们是怎么解决的? |
经常性发生闪屏,已经自己接管生命周期了,还是偶发性发生闪屏,目前是进入一个flutter页面,在数据还没渲染出来之前,快速切到后台,或者跳转原生页面回来,有偶发现象 |
大佬们有办法解决吗,经常性发生闪屏,已经自己接管生命周期了,还是会有几率闪屏 |
@yyzl0418 自己接管的话,如果只有首次进去时会有概率闪屏,那么大概率是Flutter默认帧调度是开启的,首次进入时如果被弹窗或者其他原生Fragment盖住(此时没有执行FlutterFragment的onPause()方法),再次回到FlutterFragment时就闪了,可以尝试下在Flutter初始化后,直接暂停帧调度。 |
不是首次,我这边的情况是如果一个flutter页面的动画没有结束,快速切换到一个非flutter页面,再切换回来就有一定概率会闪屏 |
@yyzl0418 这种情况只能自己接管帧调度了,我是自己完全接管帧调度搞定的,你把Fragment的生命周期好好缕缕,只在Fragment的onResume() / onPause() 来开启/关闭Flutter帧调度。 |
@0xZOne hi 能否给个联系方式 有个问题请教 |
我已经初始化时暂停帧调度了,感觉还是有一定概率出现,而且包括切出程序,再进去,虽然已经处理了暂停恢复调度,但是还是有概率出现(大概1/10概率) 有人知道到底是什么原因导致闪烁吗? |
#onPause: n{2f9c37a} (e9f8cdb1-3386-4364-a969-b6b97292bf90 id=0x7f09042c), isFinshing=false onBackground start: com.idlefish.flutterboost.j0@49f1b8dMainPage handlePageLifecycleStateChange: state=PageState.disappeared onBackground end: com.idlefish.flutterboost.j0@49f1b8d#onSaveInstanceState: n{2f9c37a} (e9f8cdb1-3386-4364-a969-b6b97292bf90 id=0x7f09042c) onForeground start: com.idlefish.flutterboost.j0@49f1b8d#changeFlutterAppLifecycle: 0, com.idlefish.flutterboost.j0@49f1b8d onForeground end: com.idlefish.flutterboost.j0@49f1b8d#sendEventToNative: com.idlefish.flutterboost.j0@49f1b8d (切到最近应用,然后再进去)这个状态,应该是没有错的?但是还是闪 |
升级Flutter SDK版本即可,目前升级到3.13.5后不再复现 |
生命周期处理对了还是会闪烁,目前的处理方案是切换到flutter tab页面,让flutter页面往上滑动0.01个像素,暂时解决了。 |
怎么把每个页面都滑动0.01的 |
问题,见bug单
#1715
@0xZOne
我看还有一个场景,还会复现这个问题,没有完全修改。
复现方式:
前后台切换。
原因,代码如下:

现象:
Record_2022-10-11-17-29-55_20d5840949c765d87a54257.mp4
The text was updated successfully, but these errors were encountered: