一直向下滑动加载图片时 allocated
的内存是 50M ~ 60M 之间,但是向上滑动后占用的内存可以达到 130M 或者更多,使用的 AsyncTask
异步加载网络数据 list.addAll()
,glide
来加载网络图片。一直向下滑动时并没有发生明显的卡顿,但是突然上滑以后会出现明显的卡顿以及 gc 的情况,有什么办法解决或者可以解释一下触发的原因吗,谢谢。RecyclerView 显示情况
1
20015jjw 2016-07-08 03:29:44 +08:00
我觉得没卡啊... 是滚太快吧 233333333
|
2
kyze8439690 2016-07-08 09:56:27 +08:00
确定一下加载的图片的大小
|
3
pybog 2016-07-08 10:05:44 +08:00
卡頓應該是在主線程的操作了費時的操作。建議排查一下。
|
4
kyze8439690 2016-07-08 10:33:03 +08:00 2
@pybog 一般就是加载的图片太大了,没有按照实际 view 的大小解析。向下滑动是解析新图片所以卡,向上滑动因为有 memcache 所以不卡。
|
5
zhaohui318 2016-07-08 15:06:38 +08:00
用 recyclerview 加 glide 遇到的问题就是程序刚启动后滑动会从网络上加载图片就会 gc_for_alloc 卡顿,内存占用达到 40M 以后就不卡了。没有想到好的解决方案,是 glide 内存缓存的大小设置问题 还是 recyclerview 的回收问题
|
6
ilumer OP @kyze8439690 实际的 `view` 也就是相对在手机显示的大小,我用 `glide.override()` 重新 `resize` `view`的大小,这里应该是满足了加载合适的图片。我可以这样理解吗?
|
7
kyze8439690 2016-07-13 21:27:55 +08:00 2
@ilumer 第一次 getView 的时候, view 是创建出来的,此时并没有经过 measure layout ,所以没有确切的大小(除非 layoutParams 中的高宽),所以用来计算可能会是错误的。
|
8
ilumer OP @kyze8439690 谢谢回答。
|