2

我的问题与内存有关,我有一个 Web 服务,它为我提供了一个 URL 列表。每个 URL 对应一个大图。我的移动应用程序必须解析 Web 服务提供的 xml,然后在 GridView 中显示这些图像。我尝试了几种功能来显示图像,例如:

  • 多线程

  • 延迟加载

  • 使用 inSampleSize减小图像大小(这会导致我的应用程序耗时过长)

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

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

4

1 回答 1

5

欢迎来到 Android 上最困难的问题之一。首先,我将首先阅读 google 写的关于如何处理位图的新文档。它不是轻读,但您可能需要通读一遍。它只上线了几个星期,所以你可能还没有看到它。它详细介绍了您提到的许多内容,例如多线程、延迟加载和下采样。他们还建议使用图像缓存。

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

我会让 web api 返回一个缩略图 url 和完整图像 url 列表,当视图出现在屏幕上时,你可以延迟下载它们,并使用缓存将它们保留一段时间。确保您也对缩略图的大小进行采样。然后,当用户单击图像时,我会下载完整图像,并在它到达时在背景上对其进行采样,然后再显示它。

于 2012-06-09T22:58:23.390 回答