关于NestedScrollView和Paging3一起使用的bug,其实更应该说是NestedScrollView和RecyclerView一起使用时产生的“问题”。
Bug还原
使用NestedScrollview嵌套竖向的RecyclerView时,同时使用Paging3分页加载库实现RecyclerView的分页加载。NestScrollView最终导致Paging3分页加载循环加载,即进入页面后,会不断进行分页加载,直到所有页面加载完成,快速连续的分页加载导致页面滑动卡顿。

上图中,NestedScrollView嵌套一个RecyclerView和其他控件,进入页面后,Paging3的adpter预设一页8个Item,所以第一次应只加载8个Item,只有当屏幕滚动到第8个Item时触发分页加载,事实上在进入页面后,就会不断触发Paging3的分页加载,第二张图显示第9-16号Item被加载,之后每页的Item都被分页加载出来。
组件简介
NestedScrollView,即支持嵌套滑动的ScrollView,被官方推荐和RecyclerView一起使用解决嵌套滑动的问题,可以在NestedScrollView中嵌套RecyclerView+其他控件,解决ScrollView会出现的滑动冲突问题,但NestedScrollView本身就有很多问题,常见问题见NestedScrollView、RecycleView、ViewPager 等布局方面的常见问题汇总,及解决
Paging3,Android Jetpack的一部分,Paging库可帮助您加载和显示来自本地存储或网络中更大的数据集中的数据

在NestedScrollView中嵌套使用RecyclerView配合Paging3分页加载时,出现循环加载导致页面卡顿。问题在于NestedScrollView加载所有Item触发Paging3,而Paging3在边界触发分页,造成无限循环。解决方案包括避免使用NestedScrollView嵌套,或改用CoordinatorLayout等组件来实现需求。
最低0.47元/天 解锁文章
1198

被折叠的 条评论
为什么被折叠?



