Recyclerview 知识整理

245 阅读1分钟
onTouchEvent
Move
   scrollByInternal
      mLayout.scrollVerticallyBy(y, mRecycler, mState);
         LinearLayoutManager.scrollBy();
             fill(recycler, mLayoutState, state, false);
 fill(recycler, mLayoutState, state, false);
   recycleByLayoutState(recycler, layoutState);//回收
         recycler.recycleViewHolderInternal()//回收主要方法
   layoutChunk(recycler, state, layoutState, layoutChunkResult);//复用
      layoutState.next(recycler);
          recycler.getViewForPosition(mCurrentPosition);
第一级:mChangedScrap 与 mAttachedScrap  ---> 回收:recycler.scrapView(view);
第二级:mCachedViews---》 默认大小为2 ---》 回收:recycler.recycleViewHolderInternal()
第三级:mViewCacheExtension
第四级:pool ---》 默认大小5

onCreate
onBind

四级缓存

image.png

数据结构

image.png

回收机制 image.png

复用机制

image.png

掌握这17张图,掌握RecyclerView中的“黑科技”预加载

mp.weixin.qq.com/s/zEpmDXBxf…

这10张图拿去,别再说学不会RecyclerView的缓存复用机制了!

mp.weixin.qq.com/s/SqjGeGW2c…