美文网首页
RecyclerView

RecyclerView

作者: yesyourhighness | 来源:发表于2021-01-27 19:56 被阅读0次

    What recyclerview是什么?

    A flexible view for providing a limited window into a large data set.

    有什么好处,优点?

    RecyclerView 可以让您轻松高效地显示大量数据。您提供数据并定义每个列表项的外观,而 RecyclerView 库会根据需要动态创建元素。

    顾名思义,RecyclerView 会回收这些单个的元素。当列表项滚动出屏幕时,RecyclerView 不会销毁其视图。相反,RecyclerView 会对屏幕上滚动的新列表项重用该视图。这种重用可以显著提高性能,改善应用响应能力并降低功耗。

    如何使用?

    https://developer.android.com/guide/topics/ui/layout/recyclerview?hl=zh-cn

    原理是什么?

    四级缓存
    变量 作用
    mChangedScrap 与RecyclerView分离的ViewHolder列表
    mAttachedScrap 未与RecyclerView分离的ViewHolder列表
    mCachedViews ViewHolder缓存列表
    mViewCacheExtension 开发者可以控制的ViewHolder缓存的帮助类
    mRecyclerPool ViewHolder缓存池

    调用流程图

    总结

    经过上面的分析,我们可以看出RecyclerView 缓存机制(Recycler)大致可以分为5级。
    第一级 通过mChangedScrap匹配 position或者id获取holder缓存。
    第二级 从mAttachedScrap中通过匹配position获取holder缓存,或者通过ChildHelper找到隐藏但是没有被移除的View,通过getChildViewHolderInt(view)方法获取holder缓存,或者
    从mCachedViews中通过匹配position获取holder缓存。
    第三级 从mAttachedScrap中通过匹配id获取holder缓存,或者
    从mCachedViews中通过匹配id获取holder缓存。
    第四级 从ViewCacheExtension获取holder缓存。
    第五级 通过RecyclerView 的ViewHolder缓存池获取holder。

    参考:
    https://zhooker.github.io/2017/08/14/%E5%85%B3%E4%BA%8ERecyclerview%E7%9A%84%E7%BC%93%E5%AD%98%E6%9C%BA%E5%88%B6%E7%9A%84%E7%90%86%E8%A7%A3/
    https://blog.csdn.net/zhangqilugrubby/article/details/53463875
    https://www.cnblogs.com/jimuzz/p/14040674.html

    相关文章

      网友评论

          本文标题:RecyclerView

          本文链接:https://www.haomeiwen.com/subject/fdhazktx.html