美文网首页Android 开发技术分享
使用ViewPager2导致使用RecyclerView复杂页面

使用ViewPager2导致使用RecyclerView复杂页面

作者: 不思进取的码农 | 来源:发表于2020-11-17 14:48 被阅读0次

记录一个bug事件

在做一个纵滑直播间的需求们,当时想到使用ViewPager2更方便,更好一些.但是没想到埋下了一个坑.
当时另一个同事在做商品详情页改版的需求,本身两个需求是在不同分支上各自打包然后测试完成的
在最后合并代码的时候最最后回归测试的时候,商品详情页滑动卡顿,特别是在向上滑动的时候尤为明显!!

使用ViewPager2的版本


androidx.viewpager2:viewpager2:1.0.0

查找原因

本质上商品详情页和直播之间并无直接关系,找原因分了3

  • 1.跑商品详情页单独的分支是否有问题
  • 2.下载一个线上包查看有问题
  • 3.当前两个都发现没问题,其实我们也是一头雾水,然后我们在合并分支里面使用的了git的功能git bisect二分查找看到地是哪一步出现的错误

最后我们是引入了ViewPager2后开始有出现问题

问题分析

ViewPager2 怎么导致商品详情页卡顿呢,我想到的唯一可能是RecyclerView 因为两者都有用到RecyclerView
查看External LIbraries 下的引用包,我们发现的问题.

RecyclerView.png

我们发现里面有两个版本的RecyclerView

但是实际我们项目中引用的RecyclerView是:

androidx.recyclerview:recyclerview:1.0.0

并没有引用1.1.0版本

最后我们发现是ViewPager2使用了RecyclerView1.1.0版本,而gradle会默认使用引用的最新版本 然后这个版本导致了我们商品详情页卡顿

解决问题

因为目前没有发现为什么RecyclerView1.1.0 的版本导致我们详情页,我们的处理方式是排除1.1.0 版本的RecyclerView

    api (rootProject.ext.dependencies["viewpager2"]) {
        exclude module: 'recyclerview'
    }

当前的遗憾

我们并没有找到为什么使用RecyclerView1.1.0版本会导致我们商品详情页卡顿,而我们在不使用RecyclerView1.1.0 后,ViewPager2的预加载好像也失去了效果.如果有这方面研究的留言,我们当时的问题只在商品详情页特别是加载大图的holder下非常明显

(每天学习一点点.每天进步一点点,分享不宜路过点个赞呀,喜欢的点个关注后续更新不断)

相关文章

网友评论

    本文标题:使用ViewPager2导致使用RecyclerView复杂页面

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