【发布时间】:2014-03-22 19:26:57
【问题描述】:
我想显示来自用户设备的一些图像的预览。为此,我在外部存储中搜索图像文件,并在每个包含一些文件的文件夹中,在列表视图中列出文件夹的名称和来自该文件夹的图像。 在我的 Nexus 上有 6 个包含图像的文件夹,所以我有 6 个列表视图项目。 我使用以下方式加载所有图像:
Drawable.createFromPath(file.getAbsolutePath())
并将生成的drawable缓存在HashMap中,以防止多次加载相同的图像。
但是,堆从 20MB 增长到 >90MB。加载图像时,应用程序响应会延迟 2 秒。很糟糕。
我不知道堆是如何从 6 个 50KB 的图像增长到 90MB 的。为了解决这个问题,我尝试从图像中加载二次采样位图 - 但是每当我加载它们时,我都会遇到内存不足的异常。
我已多次验证加载的图像不超过这 6 张。 我能做什么?
【问题讨论】: