家人们, 50000 多个数据插入 Grid LayoutManager(三行九列)的 RecycleView 后光标滑动非常卡顿,有什么优化办法?

2024 年 9 月 2 日
 Chelseawin

客户硬性要求,只能三行九列显示

8359 次点击
所在节点    Android
35 条回复
Chelseawin
2024 年 9 月 2 日
@felix0liu 不加载图片还是卡顿
Chelseawin
2024 年 9 月 2 日
@qwwuyu 没有嵌套,就是 GridLayoutManager 。我取消图片还是会卡
MozzieW
2024 年 9 月 2 日
RecyclerView 只渲染屏幕显示的数据,5000 行数据只增加内存和自己代码处理的复杂度(耗时),检测一下一下自己写的代码的运行耗时,加日志、使用第三方库、使用 Profile 功能,找到是哪个函数、代码耗时长,针对解决
Chelseawin
2024 年 9 月 2 日
@MozzieW 好的,感谢老哥
wgl
2024 年 9 月 2 日
你看看你的 Item 布局有没有嵌套很多层布局,我之前就有个同事,嵌套了很多层,然后代码死活检查不出来哪里造成的,然后一看布局,套了好几层
yukiww233
2024 年 9 月 2 日
盲猜一下, recyclerview 用了 wrap_content?
RecyclerView 性能和 item 数无关
zhaoweihao
2024 年 9 月 2 日
感觉像是用了 wrap_content ,这样会导致 recyclerview 的复用其实无效了
yor1g
2024 年 9 月 2 日
设备配置是什么? 打包出来还卡?
Chelseawin
2024 年 9 月 2 日
@yor1g 4+128 的 Android TV 盒子
yor1g
2024 年 9 月 2 日
@Chelseawin 打包出来性能还卡吗 不要调试 性能差的设备调试可能会很卡 尤其是有断点
liuchenx
2024 年 9 月 2 日
你这必然是代码的问题,哪里处理不对导致 recyclerview 的缓存复用没有生效
azhangbing
2024 年 9 月 2 日
跟数据量没关系 ,检查一下布局可能导致列表重绘的可能
tiiime
2024 年 9 月 3 日
auhah
2024 年 9 月 3 日
onBindViewHolder 里面开启了 IO 线程

。。。。

起码用个线程池啊哥,线程池用着麻烦协程走起来
Chelseawin
2024 年 9 月 4 日
@auhah 我错了,我错了。这项目就我一个人搞,没人带我

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/1069495

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX