Android面试题(30)-RecycleView和ListView

本文探讨了Android中RecyclerView与ListView在缓存机制上的差异,RecyclerView具有四级缓存,优于ListView的两层缓存。在局部刷新方面,RecyclerView通过notifyItemRemoved触发的重绘过程更精细,避免了ListView全屏刷新的问题。两者在数据源改变时的处理逻辑不同,RecyclerView更加灵活地处理View的重用和绑定。
摘要由CSDN通过智能技术生成

一、两者的缓存机制上的区别

    先来说一样的地方,ListView与RecyclerView缓存机制原理大致一样,滑动的时候,离开屏幕的ItemView被回收到缓存,新的itemView加在优先获取的缓存中的,这是正常的两种类似的缓存机制。

    而不同的地方在于,两者的缓存层级不同,ListView只有两层,RecycleView有四级缓存。

    1. mActiveViews和mAttachedScrap功能相似,意义在于快速重用屏幕上可见的列表项ItemView,而不需要重新createView和bindView;

    2. mScrapView和mCachedViews + mReyclerViewPool功能相似,意义在于缓存离开屏幕的ItemView,目的是让即将进入屏幕的ItemView重用;

    3. RecyclerView的优势在于: a.mCacheViews的使用,可以做到屏幕外的列表项ItemView进入屏幕内时也无须bindView快速重用; b.mRecyclerPool可以供多个RecyclerView共同使用,在特定场景下,如viewpaper+多个列表页下有优势.客观来说,RecyclerView在特定场景下对ListView的缓存机制做了补强和完善。

    同时,两者的缓存不同,RecycleView缓存在ViewHolder,可以看作是:View + ViewHolder(避免每次createView时调用findViewById) + flag(标识状态);

    而ListView缓存在View上,

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值