当显示垂直排列各个部分的屏幕时,每个部分看起来与另一部分不同(因此可能回收物品不会使用实际的回收而是娱乐),使用回收视图组会有任何真正的好处,考虑到不会显示大的位图,而不是普通的ScrollView
?
我怀疑使用ListView
时会产生性能影响,这可能会影响滚动,并且内存使用量略有增加,可能是延迟(仅在测量布局时 - 通常不会经常)使用{{ 1}},但这些对于7个部分是否重要,例如,其中3个部分一次可见?
谢谢!
答案 0 :(得分:3)
这主要是猜测,但我认为这是相对明智的猜测。
假设你有1000个部分,每个部分都与另一个不同。我的理解是ScrollView
和ListView
在这里都会有“问题”,尽管它们各自存在的问题会有所不同。
ScrollView
将预先测量并布置所有孩子(这可能会非常昂贵并且可能会导致您的UI出现相当大的延迟)。并且它会使所有这些视图在内存中膨胀并徘徊(这可能会导致您的进程因OutOfMemoryError
而崩溃)。但如果延迟是可以接受的,并且如果你有足够的内存用于所有内容,此时你的应用程序应该运行得非常顺畅(即滚动/投掷时没有丢帧)。 / p>
另一方面,
ListView
只会测量并布置目前在屏幕上显示的那些孩子,以及一些立即在屏幕外的额外内容。因此,初始性能应该非常快,并且内存消耗应该非常低。但是你提到每个部分都是“不同的”,因此视图回收不会“起作用”。在实践中,这意味着忽略convertView
的{{1}}参数并且每次都膨胀新视图。如果您的部分很复杂,这可能会在滚动/投掷过程中轻易导致跳帧。
但是你提到你的应用只有7个部分,或者大约2.5个屏幕的UI。对于这么少的数字,我认为在单纯尝试之前担心性能是愚蠢的;我怀疑getView()
持有ScrollView
持有所有七个部分在所有现代设备上都能很好地工作。