嗨,新年快乐!
我正在尝试从互联网上下载图像并将它们放入不同的 ImageViews 中。ImageViews 在用户滚动时动态创建。当用户到达滚动视图的底部时,我又加载了 10 张图像。
图像加载正常,但是当我有很多图像时,我得到一个 java.lang.OutOfMemoryError。
我知道问题是我有很多图像消耗大量内存,所以......我的场景该怎么做?
谢谢!
嗨,新年快乐!
我正在尝试从互联网上下载图像并将它们放入不同的 ImageViews 中。ImageViews 在用户滚动时动态创建。当用户到达滚动视图的底部时,我又加载了 10 张图像。
图像加载正常,但是当我有很多图像时,我得到一个 java.lang.OutOfMemoryError。
我知道问题是我有很多图像消耗大量内存,所以......我的场景该怎么做?
谢谢!
尝试使用 ListView 而不是 ScrollView。然后你可以使用像Universal Image Loader这样的延迟加载技术。ListView 利用视图回收,这将更容易在您的内存中,您还可以使用图像加载器缓存图像。这个库也有一些内存管理选项。
您将不得不跟踪已加载的图像,并在它们看不见时开始回收它们。
您可能会发现LruCache是一个有价值的工具。在 IO12 上有一个很好的演讲“ Doing More With Less: Being a Good Android Citizen ”,讨论了很多内存问题,并在 4 分钟左右开始讨论如何使用 LruCache。