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

标签 android image gridview

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

  • 多线程

  • 延迟加载

  • 使用 inSampleSize 减小图像大小(这会导致我的应用花费太长时间)

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

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

最佳答案

欢迎来到 Android 上最难的问题之一。首先我会从 reading this new documentation google wrote on how to handle bitmaps 开始。这本书读起来并不轻松,但您可能需要从头到尾读完。它才上线几周,所以你可能还没有看到它。它详细介绍了您提到的许多内容,例如多线程、延迟加载和下采样。他们还建议使用图像缓存。

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

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

关于android - 在 GridView 中加载多个大图像的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10965036/

相关文章:

c# - 如何防止在绑定(bind)期间将行添加到 GridView

android - 如何使用按钮清除android中的 Canvas ?

javascript - ASP.NET WebForms 使用 jQuery v1.9.0 检查 GridView 中的所有复选框不起作用

android - Delight-im 高级 webview 在每个 GET 和 POST 请求中发送自定义 header

javascript - 使用 gif.js 创建 GIF 不适用于透明图像

html - 如何在css中的图像下添加文字说明

php - 将数据从 mssql 转换为 mysql 并在加载文件时出现问题

java - 具有行跨度和列跨度的自定义 GridView

Android 多项目选择 RecyclerView

android - 在 <item> XML 中使用 drawable 和 <shape>