【问题标题】:ScrollView vs ListView PerformanceScrollView 与 ListView 性能
【发布时间】:2015-04-22 02:04:06
【问题描述】:

我有这种情况想讨论:

我有一个列表视图,它的目的是展示 25 家商店。 对于我想要的设计:

2个布局,第一个有: 1 张商店的大照片(从数据库下载)。 1 个图标,如果商店属于评分最高的商店列表(该图标在我的应用程序上) 1 个文本视图(下载的字符串)

第二个有: 3 个文本视图。(下载的字符串)

Everytextview 有一个自定义字体。

您可以想象,这对每个项目来说都是一项艰巨的任务。

我的主要问题是:

如果我下载所有内容而不是创建一个列表视图,而是用这些数据填充一个滚动视图,我不会获得更好的性能吗?

创建布局可能需要更多时间,但滚动可能会更流畅还是我错了?

【问题讨论】:

  • 在决定是否需要 ListView 与 ScrollView 之前,您可以尝试的第一件事是仅将位图显示为您需要的分辨率(屏幕上视图的大小)。
  • 你如何衡量性能顺便说一句?是用户在屏幕上看到数据之前必须等待的时间长度吗?或者只是滚动内容时的延迟量(由 FPS 量化)?或者这些和其他东西的某种组合?
  • 当我提到性能时更像是滚动更流畅

标签: android listview scrollview


【解决方案1】:

您可以对ListView 执行相同操作(下载所有内容并显示),但我认为“下载所有内容”实际上不会带来任何性能改进(除非您在谈论缓存)。

ScrollView 将导致更差的内存性能,因为您必须一次创建并保留 25 个视图。相反,ListView 在滚动时会重复使用相同的视图,这将导致创建尽可能多的视图。

使用ScrollView,如果数据集发生更改,您必须以某种方式重新填充您的 25 个视图。在最坏的情况下重新创建所有视图。

此外,如果使用ScrollView,您将不得不同时处理内存中的 25 张大照片,这可能会让您在几天内做噩梦。

【讨论】:

  • 有史以来最好的答案!我现在完全开悟了!谢谢
【解决方案2】:

根据我的经验,如果列表中的元素数量少于 50 个并且布局没有使用太多内存,那么使用滚动视图可能会更好。

ListView 专为更大的数据集而设计,旨在减少内存使用量而不是性能。谷歌投入了大量工作来优化其性能。再加上查看器模式和现代硬件,感知性能接近完全填充的滚动视图。

但是,如果数据集足够小而不会影响内存使用,为什么还需要 Listview?由于 Google 所做的底层时髦优化,ListView 与花哨的动画结合使用时会很棘手。

【讨论】:

  • 因为:1. 您必须处理内存中数据集中的 25 个项目(包括图像),2. 您必须处理 25 个视图层次结构(这在内存方面并不像您想象的那么小思考)。 3. 一旦数据集发生变化,你必须重新创建所有这些东西。滚动性能大致相同,但制作动画更难 - 我同意。希望RecyclerView能解决。
  • 正如我提到的“如果列表中的元素数量少于 50 并且布局没有使用 TOO MUCH MEMORY”,这就是使用滚动视图更好的标准。虽然在大多数情况下我自己也倾向于使用 ListView,但这确实取决于每种情况。因此,我给出了这两种用法的原因。而且滚动视图确实有它的好处。
  • 虽然标准不明确,是吗?什么是内存过多?它指的是哪些设备?
【解决方案3】:

我从类似的问题中学到的是,滚动视图比列表视图更平滑。我的情况是为导航抽屉选择一个,因为抽屉中的平滑充气和滚动对用户体验有直接影响。 我首先采用了列表视图,但它绝不是一帆风顺的。然后我发现发现here 谷歌开发人员使用scrollview 而不是listview 作为抽屉,这对我来说也很流畅。 但是,如果您需要延迟加载列表项(在我的情况下不是),那么您应该使用 listview。

【讨论】:

    猜你喜欢
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多