【问题标题】:android, xhdpi - heapandroid,xhdpi - 堆
【发布时间】:2012-10-12 18:01:48
【问题描述】:

我在 drawable-xhdpi 中有 15 个图像,每个都是 800x800,在 drawable-hdpi 我有相同的图像,但 600x600,当我在具有 hdpi 分辨率的设备上运行应用程序时,堆大小约为 3mb,但是当我运行时它在具有 xhdpi 分辨率的设备上堆大小超过 40mb 并且我内存不足? 怎么了?图片是否太大?

堆大小: ldpi : ~3mb mdpi : ~3mb hdpi : ~3mb xhdpi : ~40mb

这样加载图片:

 b1 = BitmapFactory.decodeResource(getResources(), R.drawable.image);
 imageview.setImageBitmap(b1);

then in OnBackPressed() b1.recycle()

【问题讨论】:

  • 你能用imageview.setImageResource(R.drawable.image)代替吗?这样您就不必担心回收位图。
  • 我猜你需要分享更多关于你的应用的信息(你用这些图片做什么,一次显示多少等等),可能还有更多的代码来获得任何进一步。除非你到目前为止所展示的就是你所做的一切?
  • 有15张图片*.png(透明),每张图片都位于前一张图片上,有点像堆栈。当我单击图像时,我将可见性更改为消失。就是这样;)每个xhdpi文件是80kB,hdpi:60kB
  • 你找到任何解决方案了吗...我在我的应用程序中也面临同样的问题...您也可能想使用此在线工具显着减小 png 大小...tinypng.org

标签: android image memory memory-management drawable


【解决方案1】:

这已经被问过很多次了...加载时用于位图的实际内存是H x W x 4。 800 * 800 * 4 * 15 = 38 MB。您不应该同时加载所有 15 张图像。由于它们大约是屏幕大小,因此在这种情况下重新采样没有意义,您只需要弄清楚如何避免同时加载所有它们。

【讨论】:

  • 我需要同时加载它们。 svg 呢?
  • 好吧,你不能:)。将它们组合成您想要的最终结果怎么样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
  • 2012-03-01
  • 2012-08-03
相关资源
最近更新 更多