flex组件生命周期第三阶段理解

本文深入探讨了UI组件的生命周期管理,介绍了如何通过标记失效和延迟验证来优化UI更新过程,减少不必要的资源消耗。阐述了从属性更改到最终界面布局更新的一系列步骤,包括属性提交、尺寸计算和界面布局更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

组件的生命周期,意义在于节约内存和cpu消耗,防止在一帧内重复的对UI进行属性的修改,导致在屏幕上的不断渲染而导致资源的浪费。

由此进行考虑,在一帧内只进行记录,哪些属性需要修改,需要针对于哪方面的界面或者尺寸进行更新。所以在属性发生更改的时候

首先是标记失效,利用invalidate进行标记失效,实质这里调用layoutManger的invalidate方法,将涉及到的先置于队列中,然后延迟一帧,

然后调用layoutManger.validate的方法,实质这里是遍历队列中的UI,然后分别调用它们的validate的方法,然后再去依照顺序进行

commit的属性提交,measure的尺寸计算,update的界面布局更新,如此种种。

这里依次进行更新,然后在更新的过程中按照顺序,在更改属性的时候,依照由外到内的方向,一次对UI进行属性更改。

在measure的尺寸测量过程中,依照由内向外的方向,一次对UI进行度量操作。如果不显式设置它的匡高,它就会在这时调用measure()

方法给自己测量一个最佳尺寸出来。反之,如果设置了固定尺寸,就安札你显式设置的尺寸,若同时被设置了width和height,measure()方法

将不会被调用。而所谓的最佳尺寸,不同的组件都有自己的测量方式,容器是以能刚好放下所有子项为最佳尺寸,文本是以能完整显示文本内容

为最佳尺寸。所以需要依照由内到外的方式进行测量操作。在度量的过程中,在measure中如果是容器是组件的话,会layout的measure的方法,

依照是普通布局,水平布局,垂直布局,亦或是网格布局,然后计算在此等布局下,在子项满足各自的坐标位置,宽高属性,由此计算到本身

的宽高属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值