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