我的问题涉及内存,我有一个Web服务,为我提供了一个Url列表。每个URL对应一个大图像。我的移动应用程序必须解析Web服务提供的xml,而不是在GridView中显示这些图像。我尝试了几个功能,以显示图像,如:
多线程
延迟加载
缩小图片大小(这会导致我的应用耗时太长)
我是否必须为每个大图像附加一个缩略图,并让网络服务返回给我所有缩略图的列表,然后向用户显示这些缩略图,如果他点击其中一个比我有为了在一个单独的视图中显示大图像,我有这个想法,因为我注意到当我显示一个图像时,我没有得到一个outofMemory异常!!
这是一个可靠的解决方案吗? 有更好的方式吗?
答案 0 :(得分:5)
欢迎使用Android上最棘手的问题之一。首先,我将从reading this new documentation google wrote on how to handle bitmaps开始。它不是一个轻读,但你可能需要一直阅读它。它只持续了几个星期,所以你可能没有看到它。它详细介绍了您提到的许多内容,例如多线程,延迟加载和下采样。他们还建议使用图像缓存。
为每个图像下载大图像然后下采样将是非常低效的。首先,下载大小比需要的大。其次,您需要将其加载到内存中以执行下采样,第三次下采样有点慢。
我希望web api返回一个缩略图网址和完整图片网址列表,您可以懒得下载,因为视图会出现在屏幕上并使用缓存让它们保持一段时间。确保你也缩小了缩略图的大小。然后,当用户点击图像时,我会下载完整的图像,然后在它到达时在背景上下载,然后再显示它。