V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ilumer
V2EX  ›  Android

Recyclerview 加载大量数据后向上滑动发生卡顿。

  •  
  •   ilumer · 2016-07-08 00:32:14 +08:00 · 21550 次点击
    这是一个创建于 3069 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一直向下滑动加载图片时 allocated 的内存是 50M ~ 60M 之间,但是向上滑动后占用的内存可以达到 130M 或者更多,使用的 AsyncTask 异步加载网络数据 list.addAll()glide 来加载网络图片。一直向下滑动时并没有发生明显的卡顿,但是突然上滑以后会出现明显的卡顿以及 gc 的情况,有什么办法解决或者可以解释一下触发的原因吗,谢谢。RecyclerView 显示情况

    8 条回复    2016-07-14 00:08:44 +08:00
    20015jjw
        1
    20015jjw  
       2016-07-08 03:29:44 +08:00
    我觉得没卡啊... 是滚太快吧 233333333
    kyze8439690
        2
    kyze8439690  
       2016-07-08 09:56:27 +08:00
    确定一下加载的图片的大小
    pybog
        3
    pybog  
       2016-07-08 10:05:44 +08:00
    卡頓應該是在主線程的操作了費時的操作。建議排查一下。
    kyze8439690
        4
    kyze8439690  
       2016-07-08 10:33:03 +08:00   ❤️ 2
    @pybog 一般就是加载的图片太大了,没有按照实际 view 的大小解析。向下滑动是解析新图片所以卡,向上滑动因为有 memcache 所以不卡。
    zhaohui318
        5
    zhaohui318  
       2016-07-08 15:06:38 +08:00
    用 recyclerview 加 glide 遇到的问题就是程序刚启动后滑动会从网络上加载图片就会 gc_for_alloc 卡顿,内存占用达到 40M 以后就不卡了。没有想到好的解决方案,是 glide 内存缓存的大小设置问题 还是 recyclerview 的回收问题
    ilumer
        6
    ilumer  
    OP
       2016-07-09 15:23:17 +08:00
    @kyze8439690 实际的 `view` 也就是相对在手机显示的大小,我用 `glide.override()` 重新 `resize` `view`的大小,这里应该是满足了加载合适的图片。我可以这样理解吗?
    kyze8439690
        7
    kyze8439690  
       2016-07-13 21:27:55 +08:00   ❤️ 2
    @ilumer 第一次 getView 的时候, view 是创建出来的,此时并没有经过 measure layout ,所以没有确切的大小(除非 layoutParams 中的高宽),所以用来计算可能会是错误的。
    ilumer
        8
    ilumer  
    OP
       2016-07-14 00:08:44 +08:00
    @kyze8439690 谢谢回答。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5570 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 08:00 · PVG 16:00 · LAX 00:00 · JFK 03:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.