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

HarmonyOS(57) UI性能优化

性能优化是APP开发绕不过的话题,那么在HarmonyOS开发过程中怎么进行性能优化呢?今天就来总结下相关知识点。

UI性能优化

  • 1、避免在组件的生命周期内执行高耗时操作
  • 2、合理使用ResourceManager
  • 3、优先使用@Builder方法代替自定义组件
  • 4、参考资料

1、避免在组件的生命周期内执行高耗时操作

HarmonyOS自定义组件的生命周期如下图:
在这里插入图片描述
如上图所示,自定义组件在build函数执行之前,将先执行aboutToAppear()生命周期回调函数。此时若在该函数中执行耗时操作,将阻塞UI渲染,增加UI主线程负担。因此,应尽量避免在自定义组件的生命周期内执行高耗时操作,在aboutToAppear()生命周期函数内建议只做当前组件的初始化逻辑。
解决思路:对于复杂计算的耗时场景,可以将计算结果进行缓存处理。对于不需要等待结果的高耗时任务,可以采用多线程处理该任务,通过并发的方式避免主线程阻塞。

2、合理使用ResourceManager

在生命周期aboutToAppear中应该避免使用ResourceManagergetXXXSync接口入参中直接使用资源信息,推荐使用资源id作为入参,推荐用法为:resourceManager.getStringSync($r('app.string.test').id)

aboutToAppear(): void {//反例getContext().resourceManager.getStringSync($r('app.string.app_name'));//推荐用法getContext().resourceManager.getStringSync($r('app.string.app_name').id);}

3、优先使用@Builder方法代替自定义组件

如下图,在build阶段将在后端FrameNode树创建一个相应的CustomNode节点,在渲染阶段时也会创建对应的RenderNode节点,如下图所示
在这里插入图片描述

  • 前端UI描述结构会在后端创建相应的FrameNode节点树;每个树节点和前端UI组件是一一对应的关系
  • FrameNode节点树主要用于处理UI组件属性更新、布局测算、事件处理等业务逻辑;
  • CustomNode作为FrameNode的子类,用于处理自定义组件相关业务逻辑,比如执行build函数。
  • FrameNode节点树在渲染阶段生成后端渲染树进行UI渲染。

所以当在页面上大量使用自定义组件时,会成倍增加FrameNode节点树上CustomNode类型的节点数量,增加页面创建和渲染时长。因此,在满足业务需求的前提下,可以优先使用@builder函数代替自定义组件。

4、参考资料

UI组件性能优化

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

相关文章:

  • Mysql的加锁情况详解
  • hive3.1.2编译spark3安装包
  • 网络安全,文明上网(1)享科技,提素养
  • ESP32 烧录问题
  • CnosDB 实时流式计算:优化时序数据处理与降采样解决方案
  • ApiChain 从迭代测试用例到项目回归测试 核心使用教程
  • 数据集-目标检测系列- 花卉 玫瑰 检测数据集 rose >> DataBall
  • django从入门到实战(四)——模型与数据库
  • LeetCode:1008. 前序遍历构造二叉搜索树
  • gdb - 调试工具 - 入门 (一)
  • Swift内存访问冲突
  • 深入理解Spring(三)
  • TB6612电机驱动模块使用指南
  • Paper -- 洪水深度估计 -- 利用图像处理和深度神经网络绘制街道照片中的洪水深度图
  • 学习C#中的BackgroundWorker 组件
  • 【Vue3新工具】Pinia.js:提升开发效率,更轻量、更高效的状态管理方案!
  • PCB 间接雷击模拟
  • JAVA泛型和顺序表ArrayList
  • Qt桌面应用开发 第六天(鼠标事件 定时器事件 定时器类 事件分发器 事件过滤器)
  • Javascript高级—深入JS模板字符串的高级用法
  • 14. 【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--章节总结
  • vulhub之fastjson
  • 2024年亚太地区数学建模大赛D题-探索量子加速人工智能的前沿领域
  • 卷积神经网络各层介绍
  • Python应用指南:高德拥堵延时指数
  • ISO 21434标准:汽车网络安全管理的利与弊
  • 无插件H5播放器EasyPlayer.js视频流媒体播放器如何开启electron硬解码Hevc(H265)
  • excel版数独游戏(已完成)
  • 接口上传视频和oss直传视频到阿里云组件
  • Arcgis 地图制作