23 条回复  ·  261 次点击
qwwuyu 小成 2024-9-2 14:26:05
三行九列是什么意思 LinearLayoutManager 嵌套 GridLayoutManager 吗,那么里面的 RecyclerView 调用 setNestedScrollingEnabled(true),外层的不能用这个 API,并且里面的视图不能太高,复用里层的 RecyclerView 不能重复去设置 adapter,需要用更改数据+使用复用的 adaper.notifyDataSetChanged.
1.在 onBindViewHolder 打印日志,确定不是一次性创建完了,只有视图上显示的被创建出来了,onBindViewHolder 中不要做大量计算耗时操作.
2.图片在布局中写成固定宽高会好点,glide 卡 UI 一般只有滑动的时候大图加载出来会卡一下,如果不想卡的话,那就停止的时候才加载,滑动的时候取消.(可以先取消图片加载,看卡不卡,有一点点卡都是代码复用有问题)
daiisdai 初学 2024-9-2 14:47:17
几个点考虑

1. 首先布局是不是没有写死宽高,渲染 View 时候计算宽高耗时,嵌套是不是比较严重,能不能缩减
2. 有没有 BindViewHolder 中有没有计算任务
3. 图片压缩,降低质量
4. 图片加载时候做个延时,每个图片加载任务延时 50ms ,这样避免同时多个图片绘制
itsCoderStudio 小成 2024-9-2 16:32:54
RecycleView 的卡顿跟数据多少没关系,它只会渲染屏幕中的数据。
xmt328 小成 2024-9-2 16:57:14
@itsCoderStudio 如果是 wrap_content 的问题那我真的要笑死
felix0liu 初学 2024-9-2 17:13:25
先定位问题, 不加载图片看看是不是图片加载的原因, 还是布局本身的原因
MozzieW 小成 2024-9-2 17:45:11
RecyclerView 只渲染屏幕显示的数据,5000 行数据只增加内存和自己代码处理的复杂度(耗时),检测一下一下自己写的代码的运行耗时,加日志、使用第三方库、使用 Profile 功能,找到是哪个函数、代码耗时长,针对解决
wgl 小成 2024-9-2 18:01:44
你看看你的 Item 布局有没有嵌套很多层布局,我之前就有个同事,嵌套了很多层,然后代码死活检查不出来哪里造成的,然后一看布局,套了好几层
yukiww233 小成 2024-9-2 18:26:57
盲猜一下, recyclerview 用了 wrap_content?
RecyclerView 性能和 item 数无关
zhaoweihao 初学 2024-9-2 18:29:45
感觉像是用了 wrap_content ,这样会导致 recyclerview 的复用其实无效了
yor1g 小成 2024-9-2 19:00:27
设备配置是什么?   打包出来还卡?
返回顶部