HarmonyOS长列表性能优化

  1. 长列表优化概述

    1. 10000条数据量下ForEach和LazyForEach对比效果,后者在启动、加载、滑动效果更为明显,更加流畅
    2. 优化方法
      1. 懒加载: 列表数据按需加载
      2. 缓存列表项: 提供屏幕可视区域外列表项长度的自定义调节能力
      3. 组件复用: 降低相同组件短时间内频繁创建和销毁的开销
      4. 布局优化: 使用扁平化布局方案,减少视图嵌套层级和组件数
    3. 三个关键指标:
      1. 完全显示所用时间TimeToFullDisplayTTFD、生成完整第一帧的时间
      2. 丢帧率JankyFrames、11.1ms内不能完成第一帧的绘制,就会出现丢帧
      3. 独占内存UniqueSetSizeUSS、运行一个特定进程的增量成本
  2. 懒加载

    1. ForEach渲染

    2. LazyForEach懒加载,需要实现IDataSource接口,参见API

    3. 第一种方法适合少量数据,第二种适合大量数据

    4. 图示
      在这里插入图片描述

    5. 懒加载,在华东速度过快时,数据来不及加载而出来白块

  3. 缓存列表项

    1. 预先将屏幕可视区外指定数量的列表项数据缓存

    2. 图示
      在这里插入图片描述

    3. 设置cachedCount来指定缓存数量,减少出现白块的现象,数量一般为屏幕显示的列表数的二分之一

    4. 大内存资源可以更少,小内存资源,或者浏览较差可以,更多,及c值更大

  4. 组件复用

    1. 可复用组件从组件树上移除时,会进入到一个回收缓存区,后续创建新组件节点时,会服用缓冲区的节点
    2. 图示
      在这里插入图片描述
    3. 回收区实际是一个k-v键值对,有多种可复用的组件,一般回收的时候,去掉数据,保留样式结构
    4. 通常服用组件有三个步骤,使用@Reusable,实现自定义组件的生命周期回调函数,可以在这里设置数据填充的逻辑,设置可复用组件的ID,
    5. 在复用组件前后,丢帧率会发生明显的改变,服用组件大大提升性能,缩短了BuildLazyItem耗时。把3.7%丢帧率直接缩小到0
  5. 布局优化

    1. 错误的布局方法导致组件树和嵌套层过多
    2. 图示
      在这里插入图片描述
    3. 一般最大嵌套层级控制在5-8层
    4. 假设25层嵌套,那么相对布局两层,线性布局五层,对比效果就会非常明显,如上图

在这里插入图片描述

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值