美文网首页编程之美app开发
为什么ScrollView 不要嵌套ListView

为什么ScrollView 不要嵌套ListView

作者: Daemon1993 | 来源:发表于2015-12-18 11:24 被阅读4092次

    今天发现一个问题
    ScrollView 如果一直滚动 他的整个长度其实是一直存在的
    也就是说 你滚两屏 其实上一屏的数据还在,占用内存还在 只是你看不见了
    这样问题来了
    我们由于各种原因 在开发中不得不考虑ScrollView嵌套ListView

    ListView是有自己的缓存机制 占用内存总是一屏幕
    但是如果将ListView嵌套到ScrollView中 问题来了
    我觉得ListView的缓存机制会失效 这样需求我们是达到了
    但是数据很多的情况下 内存占用太大
    甚至与OOM

    特此做了一个测试  发现SCrollView嵌套ListView的时候所有的Item都是新建的 ListView的缓存机制失效了
    所以在UI设计稿讨论的时候 我们必须要坚持 让设计师设计出来符合规范的设计稿 一般的ListView addhead就行

    GIF.gif

    顺带贴上内存图 会发现ScrollView里面的ListView之后内存暴涨

    GIF.gif

    现在看看RecycleView 替换ListView情况 看打印的log发现情况一致 ScrollView里面的缓存机制都失效

    Paste_Image.png

    所以在项目制定时期 千万要设计好不要有ScrollView嵌套ListView的相关需求

    如果确实需要一些UI效果

    比如 下图这样 可以考虑使用新控件CoordinatorLayout

    GIF.gif

    相关文章

      网友评论

      • b7949e878d66:CoordinatorLayout向上滑动没有惯性,第一次无法从标签上面直接滑动

      本文标题:为什么ScrollView 不要嵌套ListView

      本文链接:https://www.haomeiwen.com/subject/ypmzcttx.html