一、优化方法
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