今天發(fā)現(xiàn)一個問題
ScrollView 如果一直滾動 他的整個長度其實是一直存在的
也就是說 你滾兩屏 其實上一屏的數(shù)據(jù)還在跪另,占用內(nèi)存還在 只是你看不見了
這樣問題來了
我們由于各種原因 在開發(fā)中不得不考慮ScrollView嵌套ListView
ListView是有自己的緩存機(jī)制 占用內(nèi)存總是一屏幕
但是如果將ListView嵌套到ScrollView中 問題來了
我覺得ListView的緩存機(jī)制會失效 這樣需求我們是達(dá)到了
但是數(shù)據(jù)很多的情況下 內(nèi)存占用太大
甚至與OOM
特此做了一個測試 發(fā)現(xiàn)SCrollView嵌套ListView的時候所有的Item都是新建的 ListView的緩存機(jī)制失效了
所以在UI設(shè)計稿討論的時候 我們必須要堅持 讓設(shè)計師設(shè)計出來符合規(guī)范的設(shè)計稿 一般的ListView addhead就行
順帶貼上內(nèi)存圖 會發(fā)現(xiàn)ScrollView里面的ListView之后內(nèi)存暴漲
現(xiàn)在看看RecycleView 替換ListView情況 看打印的log發(fā)現(xiàn)情況一致 ScrollView里面的緩存機(jī)制都失效
所以在項目制定時期 千萬要設(shè)計好不要有ScrollView嵌套ListView的相關(guān)需求
如果確實需要一些UI效果
比如 下圖這樣 可以考慮使用新控件CoordinatorLayout