从源码浅析安卓原生如何通过时钟信号通知flutter刷新

从widgetdsbinding的drawFrame()开始向上追溯

备注:多读多理解drawFrame方法上面的备注,非常重要

从备注大概获得几个重要信息:

1:drawFrame被handleDrawFrame调用

2:SchedulerBinding. handleDrawFrame()

有备注可知,这个方法是在handleBeginFrame之后立马调用

SetState路线:

setState()à_element!.markNeedsBuild(); à owner!.scheduleBuildFor(this);à

_dirtyElements.add(element); 然后监听vsync垂直时钟信号,刷新页面

安卓原生项flutter engine发送vsync信号,flutter最开始接受的地方是

首先是SchedulerBinding# ensureFrameCallbacksRegistered方法,然后是SchedulerBinding# _handleDrawFrame  à SchedulerBinding#handleDrawFrame àwidgetsBinding#drawFrame (里面调用buildOwner!.buildScope(rootElement!);) à element.rebuild();此处的element是根element  à调用element. Element à 调用element的  performRebuild();此处就要跳到具体哪个组件里面的实现类,此处以component# performRebuild() à Element#updateChild(_child, built, slot);开始遍历整个树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值