在日历应用中,需要在一个List里面加载每个月的全部天数,包括公历和农历日期,这样在一个ItemView复用组件中就会有很多数据加载,当列表滑动的时候,通过组件复用的aboutToReuse()接口设置新的数据,就会导致ItemView内所有组件一起刷新,可能会引起掉帧卡顿现象,如何优化?
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。
在日历应用中,需要在一个List里面加载每个月的全部天数,包括公历和农历日期,这样在一个ItemView复用组件中就会有很多数据加载,当列表滑动的时候,通过组件复用的aboutToReuse()接口设置新的数据,就会导致ItemView内所有组件一起刷新,可能会引起掉帧卡顿现象,如何优化?
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。
1 回答491 阅读✓ 已解决
1 回答504 阅读
1 回答435 阅读
461 阅读
461 阅读
447 阅读
410 阅读
由于一次性加载大量数据、刷新大量组件会导致卡顿丢帧,那么减少一次性加载的数据量就是一种解决方法。但是由于业务需求,需要加载的数据总量和绘制的组件数量是不能减少的,那么就可以考虑采用分帧渲染。
滑动场景分帧:滑动日历列表,复用ItemView组件,更新每月天数包含阴历和阳历,一次更新所有天数,数据量大,可以使用分帧策略,将每月日期数据进行拆分,一帧只更新5天数据,在使用ForEach循环每月的天数时,因为一次只更新5天数据,ForEach会根据key值更新对应的天数,从而避免在一帧中更新所有数据。该方法优点是可以将数据拆分在多帧中加载,缺点是操作比较麻烦,需要开发者根据实际情况计算一帧中加载的数据量,维护较为复杂。
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。