当前位置: 首页 > news >正文

布局性能优化

布局使用不当回导致卡顿、掉帧、响应慢等问题

一、布局流程

1、应用侧会根据前端UI描述创建后端的页面节点树,其中包含了处理UI组件属性更新、布局测算、事件处理等逻辑

2、页面节点树创建完成后,UI线程会对每个元素进行测算(Measure)和布局(Layout)来确定具体的位置和大小,其中Measure阶段负责确定组件对象的测量宽高;也就是该组件元素需要占用屏幕的大小,然后会在Layout阶段确定组件的最终宽高和四个顶点的位置。

3、确认了具体元素的节点信息位置后,会根据页面节点树生成当前的界面描述数据结构  ---  渲染树,渲染树由RenderNode渲染节点组成,描述了具体的元素在屏幕上的布局信息,包含大小、位置以及一些其他属性。

4、最后渲染服务的渲染线程会根据渲染树的信息执行相应的绘制工作。

在布局中若视图嵌套层级深,节点数过多,会导致Measure和Layout的过程中,通过遍历测量组件大小和边界的时间过长,造成额外的计算。所以可以从减少节点树或减少测算布局耗时方面来优化布局性能

二、优化布局结构的方法

1、精简节点数

移除冗余的节点

使用扁平化布局减少节点数(RelativeContainer、Grid布局等)

2、合理控制元素的显示与隐藏

主要有两种控制方式,if条件渲染和visibility属性。

使用visibility属性控制场景:对性能要求较高并且会频繁切换元素的显示与隐藏的情况下

使用if条件渲染场景:如果组件的创建非常消耗资源,且不会立即使用,也并非频繁切换交互的情况下,只在特定条件下才会出现时,使用if条件渲染达到懒加载的效果。

3、能够在初期给定宽高的组件,在进行UI描述时,尽量给定宽高的大小,能够减少由于容器尺寸变化造成的重新测算过程的性能

4、合理使用布局组件

使用高级组件条件:因为基础组件能够保持良好的性能,在一些情况下使用高级组件能够大大减少嵌套节点层数和节点数,其带来的性能提升反而高于组件本身的性能消耗。

  • 在相同嵌套层级的情况下,如果多种布局方式可以实现相同布局效果,优选低消耗布局,例如使用Column、Row代替Flex实现相同的单行布局
  • 能够通过其他布局大幅度优化节点数的情况下,可以使用高级组件代替,今天带来更好的性能收益
  • 仅在必要的场景下使用高耗时的布局组件,如使用Flex实现折行布局、使用Grid实现二维网格布局等。

http://www.lryc.cn/news/456879.html

相关文章:

  • 智云人才推荐与管理系统
  • git在远程分支上新建分支
  • 用Python实现的高校教师资格考试题库程序
  • OpenVINO基本操作流程
  • Spring MVC 注解详解:@RequestBody,@RequestParam 和 @PathVariable
  • MySQL 8 中的 sql_mode
  • 13种pod的状态
  • 2025考研今天开始预报名!攻略请查收
  • JS中的Promise经典题目解析
  • 【机器学习】金融预测 —— 风险管理与股市预测
  • Bootstrap 5 分页组件使用教程
  • Linux 安装 NVM 并配置 npm 加速,开发 node 项目不再愁
  • MySQL 多条件查询
  • 深度学习模型
  • Nexpose 6.6.271 发布下载,新增功能概览
  • SimpleRAG-v1.0.3:增加文件对话功能
  • 数学建模算法与应用 第7章 数理统计与方法
  • 【网络】洪水攻击防御指南
  • 应对Redis大Key挑战:从原理到实现
  • 网络安全的全面指南
  • 前端性能优化全面指南
  • JavaScript-API(倒计时的实现)
  • 【C++】——继承【上】
  • SpringBoot 整合 阿里云 OSS图片上传
  • 内核编译 设备驱动 驱动程序
  • 自由学习记录
  • 在 C# 中使用 LINQ 查询文件列表并找出最大文件
  • 数学建模算法与应用 第6章 微分方程建模及其求解方法
  • 数据库的相关知识
  • Python cachetools常用缓存算法汇总