【问题标题】:Android - How to deal with out of memory issues when loading multiple images?Android - 加载多个图像时如何处理内存不足问题?
【发布时间】:2018-04-19 23:04:00
【问题描述】:

我正在构建一个应用程序,用户可以在其中执行 x 步(不限于)。每个步骤都有一个图像和一些文本。见下图

每次用户按下“下一步”时,他们都可以上传一张新照片,无论是从相机中还是通过选择现有照片。问题是,如果我创建了很多步骤,我会得到 OutOfMemory 异常。我正在使用 picasso 将图像加载到 imageview 中,但是如果我继续运行一段时间,我会一直内存不足。

图库应用如何处理这个问题?他们加载了数百张图片,具体取决于您手机上的图片数量。

当然,您可以压缩位图并使其尺寸更小,但最终您仍然会 oom,对吧?

【问题讨论】:

  • 简单不要不假思索地加载多张图片,您认为您的手机/平板电脑内存无限?加载、更改密度、存储、免费、继续前进……我喜欢那些提出问题然后立即消失的人……好像他们在说为我解决这个问题……我有自己的生活……我会准备好后回复!保持在线我们在这里快速响应!
  • 我喜欢问一个不完整的问题然后消失的人。您是否在每个步骤中都使用片段?你在使用活动吗?你在干嘛?你在做什么,斯特凡,你在哪里?给我们看!
  • @MartinMarconcini 他还不在这里吗??
  • @LieForBananas NOPE.
  • 其实我昨天就在这里,我看到了 Jon Goodwin 的评论,我只是没有回复,因为我不喜欢他的态度。我说我存储了来自相机的图像,或者从一个图像视图中选择一个图像,并且使用多个图像视图多次这样做会导致 OOM。我还问了一个问题,因为我想知道画廊应用程序是如何做到这一点的,但我也没有得到回应。相反,他只是殴打我。所以不行。我不想回复

标签: android image memory bitmap


【解决方案1】:

Android 方法存在限制。我预测您已将图像从相机传递到另一个活动或视图。

这是因为您不能在 putExtra() 方法中发送超过 1 mb 的数据。

现在一天大小的相机图像在 Android 手机中扩展为 5mb,如果不压缩就无法使用它们。 Here 是我使用多年的优秀图像压缩器。

在进一步处理该图像之前,将此压缩用于相机或画廊。

【讨论】:

  • 这是一个有趣的压缩器。不过,我仍然想知道,图库应用程序如何加载数百张图片?当你向下滚动时,它会加载它们,当你向上滚动时,它们仍然被加载并且不必重新加载。假设,如果我要继续添加图像,我会内存不足吗?这不会发生,但我仍然想知道
  • 他们使用 Piccaso 之类的图像加载库:github.com/square/picasso
  • 使用这个库来加载你的图片,它会自己处理成千上万张图片。
  • 我也在用毕加索
  • 那么别担心,毕加索是最好的:)。您只需使用压缩图像,
猜你喜欢
  • 2011-04-13
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 2013-08-17
  • 1970-01-01
  • 2014-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多