在屏幕上有很多图像时OutOfMemory

时间:2013-08-28 13:57:38

标签: android drawable out-of-memory android-drawable

我的Android应用程序中有一项活动,如下图所示:

my screen

说明:

  • 灰色:覆盖整个屏幕的背景图片;
  • 蓝色:5个不同大小的圆圈;
  • 绿色:任意图像;

我使用视图动画(http://developer.android.com/guide/topics/graphics/view-animation.html)为圈子制作动画,只显示一个。

但是我在一些设备和仿真器中得到了OutOfMemory异常。我曾经测试过。

我将布局更改为使用3个ImageView,一个使用3个内圈的一个图像,另一个使用1个外圈,每个使用相同的图像文件但尺寸不同,我正在设置它们启用和禁用他们的知名度。因此,我只使用了2张图片而不是5张。

通过这种方法,我停止了OutOfMemory异常,我猜是因为我正在加载并显示比以前更少的图像。

仅供参考,我在文件夹中放置了不同的图像尺寸:

  • 抽拉-HDPI
  • 抽拉-LDPI
  • 抽拉-MDPI
  • drawable-xhdpi

内存有限吗? 有没有人有更好的解决方案建议,所以我可以继续使用我的5圈图像?

应用程序很小,所以没有必要去使用OpenGL。

谢谢!

2 个答案:

答案 0 :(得分:0)

是的,Android系统仅为一个应用程序保证16MB内存,但制造商可以允许更多(通常他们这样做)。但是他们并不局限于此,所以如果你超过这个限制,你可以在很多内存不足的设备上获得OutOfMemoryException

答案 1 :(得分:0)

如果它只是圆形,则不需要实际的位图图像,但可以使用ShapeDrawable。这样可以节省圆形图像的所有内存(并且可以在所有分辨率中产生完美的圆形)。

来自another SO item的简单示例:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
    <gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF"
        android:angle="270"/>
</shape>