Flutter-ListView重用机制

先介绍一下iOS的cell重用机制,然后对比ListView的item"重用"机制.

iOS的TableViewCell重用机制

  • 通过对每一个类型的cell绑定重用id标志
  • 根据重用id去取出重用池里面的cell对象,池子里没有或者数量不够,tableView会new一个新的出来.
  • 去更新该cell,调整frame并移动到可视区域.

ListView的item"重用"机制

ListView因为没有item的重用id,所以每次滑动ListView,它会重新创建、布局、绘制可见区域内的item,一般会多绘制可见区域以外2-4个item,即预加载机制,这点跟iOS有点类似.当item不在屏幕显示的时候,会执行dispose.
Flutter整个框架对UI进行了优化,所以不必担心重复创建item的内存消耗问题.ListView的重用机制就是Flutter对UI的重用机制,优化更加彻底,会重用item对应的element和renderObject对象,因为item对象每次都会重新创建.item对象是轻量级的,它关联的renderObject和element才是正在消耗内存的,只要这两个有缓存机制就没什么大问题.而且ListView必须滚动到指定位置之后才会触发相关区域item的创建、布局等操作.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值