iOS 和 Android:UITableView与RecycleView的重用机制比较

引言:iOS和Android各有自己的列表组件。众所周知,列表组件一直都是移动端各个端中,组件重用、内存优化的重点。今天就来分析下iOS和Android各自的重用机制。

Android:RecyclerView的缓存机制

先来熟悉下ViewHolder的几个状态

  • isInvalid:表示当前ViewHolder是否已经失效。通常来说,在3种情况下会出现这种情况:1.调用了AdapternotifyDataSetChanged方法;2. 手动调用RecyclerViewinvalidateItemDecorations方法;3. 调用RecyclerViewsetAdapter方法或者swapAdapter方法。
  • isRemoved:表示当前的ViewHolder是否被移除。通常来说,数据源被移除了部分数据,然后调用AdapternotifyItemRemoved方法。
  • isBound:表示当前ViewHolder是否已经调用了onBindViewHolder
  • isTmpDetached:表示当前的ItemView是否从RecyclerView(即父View)detach掉。通常来说有两种情况下会出现这种情况:1.手动了RecyclerViewdetachView相关方法;2. 在从mHideViews里面获取ViewHolder,会先detach掉这个ViewHolder关联的ItemView
  • isScrap:表示是否在mAttachedScrap或者mChangedScrap数组里面,进而表示当前ViewHolder是否被废弃。
  • isUpdated:表示当前ViewHolder是否已经更新。通常来说,在3种情况下会出现情况:1.isInvalid方法存在的三种情况;2.调用了AdapteronBindViewHolder方法;3. 调用了AdapternotifyItemChanged方法

mAttachedScrap、mChangedScrap

mAttachedScrap存储的是当前还在屏幕中的ViewHolder,用不是人话来描述,就是是从屏幕上分离出来,但是又即将添加到屏幕上去

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值