【问题标题】:Download images and put them into ImageViews下载图像并将它们放入 ImageViews
【发布时间】:2013-01-09 01:59:35
【问题描述】:

你好,新年快乐!

我正在尝试从 Internet 下载图像并将它们放入不同的 ImageViews 中。 ImageViews 在用户滚动时动态创建。当用户到达滚动视图的底部时,我又加载了 10 张图片。

图像加载正常,但是当我有很多图像时,我得到一个 java.lang.OutOfMemoryError。

我知道问题是我有很多图像消耗大量内存,所以......我的场景该怎么做?

谢谢!

【问题讨论】:

    标签: android android-asynctask android-imageview


    【解决方案1】:

    尝试使用 ListView 而不是 ScrollView。然后你可以使用像Universal Image Loader 这样的延迟加载技术。 ListView 利用视图回收,这将更容易在您的内存中,您还可以使用图像加载器缓存图像。这个库也有一些内存管理选项。

    【讨论】:

    • 我需要两个图像列(以 pinterest 应用程序为例或我在做什么)。你觉得listview适合吗?
    • 列是单独滚动还是整个布局作为一个列表滚动?
    • 他们需要作为一个列表滚动
    • 好的。所有图像的高度都相同吗?意思是,您能否将两张图片并排放入一个列表项中。
    • 不,它们的高度不同。它们具有相同的宽度,但高度未知。以此(分钟 1 秒 10)为例:youtube.com/watch?v=BOVX6_QzEmM
    【解决方案2】:

    您将必须跟踪已加载的图像,并在它们看不见时开始回收它们。

    您可能会发现LruCache 是一个有价值的工具。在 IO12 "Doing More With Less: Being a Good Android Citizen" 上进行了一场精彩的演讲,讨论了很多内存问题,并在 4 分钟左右开始讨论了如何使用 LruCache。

    【讨论】:

    • 感谢您的回复。我去看看,告诉你一些事情^^
    • 很高兴知道 lrucache 是如何工作的,但这并不能解决我的问题。谢谢!
    猜你喜欢
    • 2013-04-24
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 2012-04-04
    • 2013-10-27
    • 1970-01-01
    相关资源
    最近更新 更多