在GridView中加载多个大图像的最佳方法

时间:2012-06-09 22:30:09

标签: android image gridview

我的问题涉及内存,我有一个Web服务,为我提供了一个Url列表。每个URL对应一个大图像。我的移动应用程序必须解析Web服务提供的xml,而不是在GridView中显示这些图像。我尝试了几个功能,以显示图像,如:

  • 多线程

  • 延迟加载

  • 使用inSampleSize
  • 缩小图片大小(这会导致我的应用耗时太长)

我是否必须为每个大图像附加一个缩略图,并让网络服务返回给我所有缩略图的列表,然后向用户显示这些缩略图,如果他点击其中一个比我有为了在一个单独的视图中显示大图像,我有这个想法,因为我注意到当我显示一个图像时,我没有得到一个outofMemory异常!!

这是一个可靠的解决方案吗? 有更好的方式吗?

1 个答案:

答案 0 :(得分:5)

欢迎使用Android上最棘手的问题之一。首先,我将从reading this new documentation google wrote on how to handle bitmaps开始。它不是一个轻读,但你可能需要一直阅读它。它只持续了几个星期,所以你可能没有看到它。它详细介绍了您提到的许多内容,例如多线程,延迟加载和下采样。他们还建议使用图像缓存。

为每个图像下载大图像然后下采样将是非常低效的。首先,下载大小比需要的大。其次,您需要将其加载到内存中以执行下采样,第三次下采样有点慢。

我希望web api返回一个缩略图网址和完整图片网址列表,您可以懒得下载,因为视图会出现在屏幕上并使用缓存让它们保持一段时间。确保你也缩小了缩略图的大小。然后,当用户点击图像时,我会下载完整的图像,然后在它到达时在背景上下载,然后再显示它。