RecycleView

缓存机制 , 回收复用   ,

1. 从滑动事件看   onTouchEvent     MotionEvent.Action_MOVE   --> scrollByInteral  垂直滑动 进入

consumedY = mLayout.scrollVerticallyBy(y, mRecycler, mState);    
LinearLayoutManager --》scrollVerticallyBy  --》 scrollBy --》
fill(recycler, mLayoutState, state, false);
(fill 里面主要两个任务   1.回收 recycleByLayoutState(recycler, layoutState);  2 复用 layoutChunk(recycler, state, layoutState, layoutChunkResult);    )。

1.回收    --》recycleViewsFromStart  -->  recycleChildren  --> removeAndRecycleViewAt  -->

recycler.recycleViewHolderInternal(viewHolder)  (最重要的回收方法 )

  -->  recycleCachedViewAt(0)

2 复用:

layoutChunk --》 layoutState.next(recycler) --》 recycler.getViewForPosition  (终极方法)
--》tryGetViewHolderForPositionByDeadline

 

四级缓存     1.根据 mChangeScrap   id 和position     holder==null -> getScrapOrHiddenOrCachedHolderForPosition

     mAttachedScrap  -->

 2.  mCachedViews     -------大小为 2   先进先出

 3. 自定义  mViewCacheExtension 

 4 pool 缓存池     getRecycledViewPool().getRecycledView(type)     默认大小为 5 先进后出  type一样  缓存的Viewholder都一样 每个type缓存 5个。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值