ListView 和RecycleView的差异化

345 阅读1分钟

ListView 和RecycleView的差异化

缓存原理

ListView和RecyclerView的缓存机制原理上讲大致相似,移出屏幕的itemView会被回收到缓存中,然后进入屏幕的ItemView,会先从缓存中获取。

层级不同

  1. ListView(两级缓存):ListView有mActiveViews和mScrapViews
  2. RecycleView是四级缓存:mAttachedScrap;mCachedViews,mViewCacheExtension(不直接使用,需用户定制),mRecyclerPool

缓存的内容不同

  1. ListView缓存的是View
  2. RecyclerView缓存的是RecyclerView.ViewHolder,即View + ViewHolder(避免每次createView时调用findViewById)+ flag(标识状态)

RecycleView支持局部刷新

二者之间的最大区别在于,数据源改变时的缓存处理逻辑,ListView是将所有的 mActiveViews都移动到了mScrapViews的回收缓存中;但RecyclerView是更加灵活的对每个View修改标志位,区分是否重新bindView