【问题标题】:android store application imagesandroid 商店应用程序图像
【发布时间】:2011-12-15 16:49:55
【问题描述】:

在我的应用程序中有很多图像资源。用于动画和嵌入式画廊。我的问题是 - 在哪里存储这些资源? 我必须将该数据与应用程序绑定 - 安装期间无需下载。 目前我所有的图像都存储在可绘制文件夹中。但是,例如,当我尝试获取图库(网格视图)的图像时,我会出现内存异常。当我尝试运行动画时也会发生这种情况。

我应该将这些图像存储在 sdcard 中,并在需要时加载它。然后从内存中释放资源。 怎么做 - 将资源放入 assets/raw 中,然后保存在 sd 卡中?然后加载它?

请帮我解决这个问题。

【问题讨论】:

    标签: android image png drawable assets


    【解决方案1】:

    有很多与此相关的 SO 问题:

    Save bitmap to location

    How do I transfer an image from its URL to the SD card?

    但是,这并不能解决您的 OutOfMemoryProblem。在这种情况下,这很可能是图像太大的原因。您可以在安装应用程序之前缩小它们。另一种方法是以编程方式调整它们的大小。

    【讨论】:

    • 不确定以编程方式调整它们的大小是否会太有用 - 您仍然需要在缩小之前加载大图像。
    • 一次一个。这比一次所有的大图都要好。
    • 如何将我的资源打包到 zip 文件夹中,放在 assets 文件夹中。当应用程序首次运行时 - zip 内容保存在 sdcard 中并且从 sdcard 中读取图像 - 我会节省一些内存对吗?我不必将所有图像存储在可绘制对象中,我只需在需要时加载我需要的内容,然后再加载 - 免费资源。你怎么看?
    【解决方案2】:

    在我看来,将图像包含在可绘制对象中的方法既方便又实用。

    但是,如果图像太大以至于您无法同时将它们加载到内存中,那么您就会遇到不同的问题。

    我要做的第一件事是检查内存不足 IS 是由图像大小引起的 - 尝试使图像更小,看看是否出现类似错误,然后你就知道了您的应用可能正在做一些可怕的事情(加载或显示时内存泄漏?)。

    如果图像大小是问题,但应用程序正常启动,那么您需要制定计划,仅在需要显示它们时从资源中加载图像(而不是在显示任何图像之前加载所有图像) ) 并在不再需要图像时处理这些资源。

    根据您的情况和上下文,有几种很好理解的方法用于这种延迟加载,需要一些缓冲。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多