marchlqq

Results 24 comments of marchlqq

> 问题 单:https://github.com/alibaba/flutter_boost/issues/1715 修复了前后台切换,可以解决动画区域不停闪烁的问题。 但是假如现在有一个首页,同问题 1736, 进入首页home,有多个fragment, 假如tab1 是 native的fragment,tab2 是 FlutterFragment; 我们先展示tab2,然后快速切换到tab1, 这个时候,在进行切后台切换,从后台到前台的时候,tab2就会运行, FlutterBoost.instance().getPlugin().onForeground(); 就会出现假死的现象了。因为tab2现在虽然在前台,但是view其实是隐藏的。所以这个问题就出现假死了。

> 「我看还有一个场景,还会复现这个问题,没有完全修改。」 > > —— 呃,具体是什么场景呢?与 #1736 是什么关系? 具体视频操作: 邮箱tab为 flutter, 聊天为 native, 切换到邮箱,在动画加载时,切换到聊天,然后快速前后台,触发 changeFlutterAppLifecycle(FLUTTER_APP_STATE_RESUMED); 假死现象就出现了。 https://user-images.githubusercontent.com/9548501/195756638-f1a7c15d-6cba-46c1-9bef-9bedccad2c66.mp4

> 按照之前的修改逻辑,是想要 > > 1. FlutterFragment被hide的时候,停止帧调度 > 2. App切到前台,如果FlutterFragment没有show,那么不要恢复帧调度,等真正可见了再恢复 > > 应该是这个意思吧 @marchlqq @0xZOne 是的。不然还是会出现假死。 请问一下,这个假死,是什么原因造成的,为什么 [注意] 应用「务必」确保前后台通知事件(onBackground/onForeground)的**非**准确性 会出现假死?

> > > 1. 停止帧调度 > > > > > > 停止帧调度,具体要怎么操作@joechan-cq > > 目前并没有直接的方法停止帧调度。之前是通过发送给Flutter “切后台”和“回前台”的事件,来触发`WidgetsFlutterBinding.handleAppLifecycleStateChanged`方法,进而更里面调用“SchedulerBinding._setFramesEnabledState”方法停止和恢复帧调度。 > > 单引擎,一个界面多个FlutterFragment的情况下,很不推荐自己去手动发送前后台事件,一旦弄错,就会导致Flutter的渲染出现异常。 那框架可以处理这个问题吗? 我发现 FlutterFragment 和其他tab切换,等加载完成,也是会出现这个问题。 所以在 onHiddenChanged,添加了前后台的控制, ![image](https://user-images.githubusercontent.com/9548501/195788800-57ae90b7-ba40-41b8-a5f0-bf04691fefd6.png) 但是,如果我是多个 FlutterFragment 的tab,那就没办法了,我其中一个tab onBackground,另一个...

> #1725 可以问问 @JunhuaLin 这个兄弟,看那个issue,应该是同一个问题,可以问问他有什么办法。 你说的,也有考虑,但是 onBackground,是系统的方法,没有针对单个view,有办法单个view的控制? 因为现在是多个 FlutterFragment,如果自身控制,总是会存在错别的。

@0xZOne 怎么停止当前widget的帧调度, 现在多个 FlutterFragment,不好处理,因为只要有view隐藏的情况下,运行动画,就会出现闪屏。 所以如果我在当前view,执行 onPageHide 的时候,暂停帧调度,onPageShow的时候,在执行帧调度,应该就没这个问题了。

> 是暂停整个root isolate的帧调度哈 这个闪烁,是不是widget 在隐藏的时候运行,就会出现呢? 可见的情况下,是没问题的。

> > > 是暂停整个root isolate的帧调度哈 > > > > > > 这个闪烁,是不是widget 在隐藏的时候运行,就会出现呢? 可见的情况下,是没问题的。 > > 目前收集到的信息是这样的~ 那有办法对单个widget操作吗?例如控制原生flutterView停止渲染,或者,在flutter页面,在show和hide,暂停整个view的绘制,或者暂停整个页面的动画。

查询了一下, platform_comm.cc, startAlarm, 58][id= 2477, after= 500, ret= true platform_comm.cc, startAlarm, 58][id= 2478, after= 600000, ret= true onReceive id=2477, curId=2477 这里卡在了,alarm 定时任务运行,没有正常运行。 am.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, time, pendingIntent); 用户在前台,也没有运行 alarm,是因为600s,10分钟的时间设定?还是因为 alarm存在问题,没有正常运行呢。 为什么会出现600s?

mars 进程,在14:01就停止了,app主进程的代码还在运行,所以现在在想,是mars进程,被回收了。就很奇怪。