为什么ScrollView 不要嵌套ListView

今天发现一个问题
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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,707评论 25 709
  • 转载请标明出处: http://www.jianshu.com/p/9b6e12d8eea0本文出自:【张旭童的简...
    张旭童阅读 5,005评论 6 68
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,261评论 4 61
  • 自从侄女三岁后,我总是一不小心就中了她的圈套。 1. 一日,我跟我侄女走在大街上,阳光明媚,我心情也很不错,嘴角总...
    顾梓夕阅读 482评论 2 2
  • 花开雪落一工装,花衣满是泥浆,为了城市靓而光,四处奔忙。 平日省吃俭用,默然不事张扬,萦怀桑梓鬓凝霜,夜梦爹娘。
    晴鹤1阅读 175评论 3 2