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

2024-09-02 09:45:28 +08:00
 Chelseawin

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

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

。。。。

起码用个线程池啊哥,线程池用着麻烦协程走起来
Chelseawin
2024-09-04 08:54:28 +08:00
@auhah 我错了,我错了。这项目就我一个人搞,没人带我

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

https://www.v2ex.com/t/1069495

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

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

© 2021 V2EX