组件绘制优化
======

应用启动性能与FrameNode树的节点数量及属性相关，建议采取以下UI组件优化方案：

#### 避免在自定义组件生命周期内执行高耗时操作

**图1** 自定义组件生命周期流程图

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/e0/v3/ONdKzOc1QyGXM9uZnPv6Lw/zh-cn_image_0000002375296885.png?HW-CC-KV=V1&HW-CC-Date=20260612T074620Z&HW-CC-Expire=86400&HW-CC-Sign=73FC089124D2FD05A44BDF0B719243896EF08F8C0917605045BD9AD4062A5E0A "点击放大")

自定义组件生命周期如上图所示。创建完成后，在执行build函数前，将先调用aboutToAppear()生命周期回调函数。此时若执行耗时操作，将阻塞UI渲染，增加UI主线程负担。因此，应避免在自定义组件的生命周期内执行高耗时操作。具体原理可参考[自定义组件生命周期](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-page-custom-components-lifecycle)。具体优化案例请参阅[避免在自定义组件的生命周期内执行高耗时操作](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-ui-component-performance-optimization#section18755173594714)。

#### 按需注册组件属性

在开发应用UI界面时，为每个组件设置属性，进行UI样式和行为逻辑处理。如果单个组件设置多个属性且该组件在应用中频繁使用，单个属性的设置将显著影响应用性能。具体优化案例请参阅[按需注册组件属性](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-ui-component-performance-optimization#section14178121175019)。

#### 减少布局计算

当组件的宽高不需要自适应时，建议在UI描述中明确指定组件的宽高数值。如果组件外部的容器尺寸发生变化，例如在拖拽缩放等场景下，组件本身的宽高固定，理论上该组件在布局阶段不会参与Measure阶段，节点中已保存了相应的大小信息。如果组件内容较多，由于避免了整体的测算过程，性能将显著提升。具体优化案例，请参阅[利用布局边界减少布局计算](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-improve-layout-performance#section151587885316)、[给定List组件宽高](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-improve-layout-performance#section114841451194917)**。**