HarmonyOS Tab + List 性能优化?

如题:HarmonyOS Tab + List 性能优化?

阅读 652
1 个回答

问题场景

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-V5/arkts-custom-components-freeze-V5

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进