【问题标题】:Android OutOfMemoryError on 5k bitmap5k 位图上的 Android OutOfMemoryError
【发布时间】:2014-05-28 18:39:45
【问题描述】:

我愿意

myImage.setBackgroundResource(R.drawable.mydrawable);

我收到了OutOfMemoryError。但是资源只有5kb!!!我有各种堆栈跟踪,有时什么也没说,有时说我正在使用大约 5Mb,有时是 7Mb。

这是在 Galaxy S4 上。在其他设备上,我没有收到错误。 GC 是否以在某些设备上触发缓慢而闻名?还有什么想法吗?

【问题讨论】:

  • PNG吗?您确定 this 是抛出 OOM 的资源吗?
  • @nKn 它是一个PNG,当我设置它时就会抛出错误,确定这一点
  • 是否可以将其转换为另一种格式,例如JPG,或者您需要它是PNG?一件事是文件在磁盘上的长度,但另一个非常不同的是Bitmap 需要多少数据来表示它,而PNG 则更糟。
  • 也许这会有所帮助:stackoverflow.com/questions/12636510/…
  • "但是资源只有5kb!" - 所以?如果一座桥的重量限制为 1000 公斤,你在上面放了 950 公斤,然后再增加 100 公斤,桥就倒塌了,你不能抱怨“但增加的重量只有 100 公斤!”。您的问题可能与此特定资源无关,而与您的整体堆使用情况有关。使用 MAT 确定您的应用程序堆发生了什么。

标签: android


【解决方案1】:

尝试将您的图像放入/drawable-nodpi 文件夹而不是/drawable

【讨论】:

  • nodpi 是什么?
  • "/drawable" 通用文件夹被系统视为像"/drawable/mdpi",所以当你用hdpi设备或更多设备运行应用程序时,图像会调整大小,变得太大。跨度>
  • 如果这不能解决您的问题,您可能需要缩小图像。您可以使用位图工厂的inSampleSize 来执行此操作。 developer.android.com/training/displaying-bitmaps/…
猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 2013-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
相关资源
最近更新 更多