在HarmonyOS NEXT开发中Tab + List 性能优化?
class Book {
bookId: string
}
prices = Map<string, Price> // 书本 ID 到价格数据的映射
tabList = Book[][] // 所有 tab 下的列表
Tabs 下有多个 tab,每个 tab 下都有一个 list,list 的数据来源是 tabList[tabIndex],在构建 ListItem 时会查找 prices 显示书本价格后台会源源不断推送书本的实时价格(比较高频),在收到实时价格后,更新 prices,数据变更会通知相应的 list item 视图重绘。
- 实际测试发现列表滑动比较卡
- 于是尝试 LazyForEach 的方式优化
- 在APP启动后显示第 1 个 Tab 下的列表,此时滑动变得很丝滑
- 切换 多个 tab 页后,滑动开始变卡
分析后得出初步结论:切换 tab 后,新 tab 以及其下的 list 被构建出来,此时无论可见还是不可见的 tab 下都有各自的 list,当后台推送数据更新 price map 时,各 tab 下有价格更新的 list 项都在重绘。如何控制不可见的 view 不进行重绘?
可以使用自定义组件冻结功能:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...