RecycleBin缓存机制

在学习Android开发的过程中,大家应该或多或少的会接触到ListView这个控件。那么,大家有没有思考过,一个屏幕只能显示一定的item,每次下滑后,消失的item去哪里了?当再次回到原来的位置的时候,加载出来的item是重新获取的还是从缓存空间里提取的呢?接下来,我们通过分析RecycleBin机制来探寻ListView的缓存机制。

RecycleBin的基本原理

RecycleBin中有两个数组,mActiveViews和mScrapViews分别存储可以直接复用的view(处于可见状态的view)和间接复用的view(处于不可见状态的view)。当屏幕向下滑动的时候,顶部view不可见时,会将其回收至RecycleBin中的mScrapViews数组中进行保存,底部需要显示一个新的View时,会从mScrapViews中取出一个View传至convertView进行复用。

在ListView中,重写addView方法,当调用时,会抛出异常。ListView是一帧一帧绘制的,会经历measure->layout->draw方法。在ListView布局的时候,会调用layoutChildren方法绘制子View。当刚开始执行layout的时候,ListView的children是上一帧中需要绘制的view的集合,当layout执行完毕时,children变成当前帧需要绘制的子View的集合。

当一个view不可见时,首先会将该view移至RecycleBin。会根据数据是否发生变化调用不同的方法。如果数据发生变化,会将所有字View移至RecycleBin的mScrapView数组中进行保存,数据未发生改变在将当前View放入m

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值