长列表优化简介

 一、优化方法 

        1、懒加载

        提供列表按需加载的能力, 解决一次性加载长列表数据耗时长、占用过多资源的问题,可以提升页面响应速度。

        2、缓存列表项

        提供屏幕可视区域外列表项长度的自定义调节能力,配合懒加载设置可缓存列表项参数,通过预加载数据提升列表滑动体验。

        3、组件服用

        提供可复用组件对象的缓存资源池,通过重复使用已经创建并缓存的组件对象,降低相同组件短时间内频繁创建和销毁的开销,提升组件渲染效率。

        4、布局优化

        使用扁平化布局方案,减少视图嵌套层级和组件数,避免过度绘制,提升页面渲染效率。

二、优化的关键指标

        1、完全显示所用时间

        表示应用生成具有完整内容的第一帧所用的时间,包括在第一帧之后异步加载的内容。

        2、丢帧率

        表示一个时间周期内的丢帧比率,是指一个时间周期内具有问题的帧比例。部分丢帧一般用户肉眼是感受不到的,只有出现连续丢帧用户才有明显感知。

        3、独占内存 

        一个进程所占用的私有内存,即该进程独占的内存。它反应了运行一个特定进程真是的编辑成本。

三、具体实现

        1、懒加载

        HarmonyOS为容器类组件的数据加载和渲染提供了2种方式:ForEach循环渲染和LazyForEach数据懒加载。
        如果列表的数据较少,数据一次性全量加载不是性能瓶颈时,可直接使用ForEach。

        

        LazyForEach实现了按需加载,针对列表数据量大,列表组件复杂的场景,减少了页面首次启动时一次性加载数据的时间消耗,减少了内存峰值。 

         

        2、缓存列表项

         LazyForEach懒加载可以通过设置cachedCount来指定缓存数量,在设置cachedCount后,出屏幕显示的Listitem组件外,还会预先将屏幕可视区域外指定数量的列表项数据缓存。这样就可以避免出现滑动白块的情况。一般而言,cachedCount=n/2,n为显示的一屏列表数,也要根据实际条件设置。如:网络速率较慢时,cachedCount可以适当的大一些;若所需数据占用内存较大时,cachedCount应小一些。

        

        3、组件复用

         HarmonyOS提供了组件复用的能力,可复用组件从组件树上移除时,会进入到一个回收缓存区,后续创建新组件节点时,会复用缓存中的节点,节约组件重新创建的时间。

        

        组件复用关键代码:

        a、使用@Reusable标识表示其具备组件复用的能力

        b、实现自定义组件的生命周期回调函数

        c、设置可复用组件的reuseId

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值