美文网首页
RecyclerView 的性能优化

RecyclerView 的性能优化

作者: yanlong107 | 来源:发表于2020-01-07 17:34 被阅读0次

之前一篇文章介绍了 ListView 和 RecyclerView 的对比, 这里继续记录下RecyclerView中常用的性能优化方案。

优化方案1:关于点击事件

RecyclerView尽量在onCreateViewHolder()设置点击事件,而不在onBindViewHolder()中设置点击事件。让 View - ViewHolder - ClickListener 是 1-1-1 的对应关系。

优化方案2:RecyclerView嵌套布局

在嵌套布局中(竖则滚动 + 局部横向滚动),可以在内部嵌套的RecyclerView中设置LinearLayoutManager.setInitialPrefetchItemCount(int count)
setInitialPrefetchItemCount() 只在线性布局中才有这个函数,且在内部嵌套RecyclerView设置才有效。 不过 这个方法可以提升 内部嵌套RecyclerView的预加载性能。

优化方案2:RecyclerView局部刷新

notifyDataSetChanged() : 一个常用的数据刷新方法,所有数据全部刷新,性能较低,在可以局部刷新的情况下不建议使用该函数。
notifyItemChanged(int position): 刷新指定postion位置上的数据(需要准确知道变化数据的postion)
DiffUtil: 查找新/旧 数据的差异,然后执行差异中的变化。(推荐使用)

void onNewDataArrived(List<News> news) {
    List<News> oldNews = myAdapter.getItems();
    // diff判断逻辑,建议放在异步线程中,diff结束后,结果在主线程中刷新
    DiffResult result = DiffUtil.calculateDiff(new MyCallback(oldNews, news));
    myAdapter.setNews(news);
    result.dispatchUpdatesTo(myAdapter);
}

END!

相关文章

  • 浅谈RecyclerView的性能优化

    RecyclerView的性能优化 在我们谈RecyclerView的性能优化之前,先让我们回顾一下Recycle...

  • DiffUtil和RecyclerView的联合使用

    最近公司在做性能优化的相关工作,在RecyclerView的优化方面,采用了DiffUtil来提升性能。 废话不多...

  • RecyclerView性能优化实战

    在Android中RecyclerView的使用随处可见,它的性能优化程度跟用户体验息息相关。 性能优化实战的例子...

  • 复习

    RecyclerView的缓存机制bitmap 优化性能优化view 的绘制流程浅析LRUCache原理(Andr...

  • RecyclerView性能优化

    概述 RecyclerView有着极高的灵活性,能实现ListView、GridView的所有功能。在日常开发中,...

  • RecyclerView性能优化

    概述 RecyclerView有着极高的灵活性,能实现ListView、GridView的所有功能。在日常开发中,...

  • RecyclerView性能优化

    RecyclerView入门 RecyclerView缓存机制

  • RecyclerView 的性能优化

    之前一篇文章介绍了 ListView 和 RecyclerView 的对比, 这里继续记录下RecyclerVie...

  • RecyclerView的性能优化

    1. 布局优化 减少过度绘制减少布局层级,简单布局可以使用FameLayout,复杂布局可以自己自定义布局,或者使...

  • RecyclerView 优化——滚动性能提升

    前言 在这篇文章中,我们将学习如何优化 Android 中的 RecyclerView 性能。通过这些优化,我们可...

网友评论

      本文标题:RecyclerView 的性能优化

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