美文网首页
RecyclerView的性能优化

RecyclerView的性能优化

作者: 无言独上西楼丶月如勾 | 来源:发表于2022-03-01 22:38 被阅读0次

    1. 布局优化

    减少过度绘制

    减少布局层级,简单布局可以使用FameLayout,复杂布局可以自己自定义布局,或者使用ConstraintLayout。

    减少xml文件inflate的时间

    这里的xml文件不仅包括layout的xml,还包括drawable的xml,xml文件inflate出itemView是通过耗时的IO操作来完成的,尤其是item的复用率低的情况下,随着viewType的增多,这种inflate带来的损耗是相当大的。这种情况下就可以通过代码生成布局的方式去优化。

    减少View对象的创建

    尽可能的简化itemView,以减少View的创建

    2.其他

    • 对于点击事件等等的监听,可以共用同一个监听器,通过position或者其他id之类的东西来进行不同的操作。
    • 对于多个拥有相同Adapter的RecyclerView(比如嵌套RecyclerView)来说,可以通过setRecycledViewPool方法来共享同一个RecycledViewPool。
    • 可以通过setItemViewCacheSize,来增大RecyclerView的缓存,以空间换时间,提高滚动的流畅性。
    • 对于item的高度一致的情况,可以通过设置RecyclerView.setHasFixedSize(true);来避免频繁的requestLayout浪费资源。
    • 尽量不用notifyDataSetChange()来更新数据,应该用notifyItemChanged(int position)notifyItemChanged(int position, @Nullable Object payload)等等更新局部item数据的方法;对于新增或者删除数据可以通过DiffUtil来局部刷新数据。
    • 对于有些数据需要特殊处理的情况,比如日期格式转换、Html.fromHtml()等比较耗时的操作,应当在请求导数据的时候就直接异步处理完成后,再交给RecyclerView来展示。

    相关文章

      网友评论

          本文标题:RecyclerView的性能优化

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