使用CircleImageView和setBackgroundResource的OutOfMemory android错误

时间:2018-03-10 11:35:45

标签: android firebase out-of-memory android-image

我有一项活动,其中我使用了2种资源:

1张圆形图像,如下所示:

String image = dataSnapshot.child("thumb_image").getValue().toString();
Picasso.with(pilotProfileImage.getContext()).load(image)
    .placeholder(R.drawable.pilot_default).into(pilotProfileImage);

当thumb_image是存储在Firebase存储中的图片时。

另一种资源:

mImage.setBackgroundResource(R.drawable.m_air);

虽然R.drawable.m_air是一个可绘制的保存在我的可绘制文件夹中

我正在接收

  

java.lang.OutOfMemoryError:无法分配带有10530520个空闲字节的14745612字节分配和10MB直到OOM

我已经看到了Bitmap的解决方案,但我在这里没有使用位图。

我已经尝试了

mDroneImage.setImageBitmap(decodeSampledBitmapFromResource(getResources(), R.drawable.mavic_air, 100, 100))

在此解决方案中:Strange out of memory issue while loading an image to a Bitmap object

但该应用仍然崩溃。此外,它没有解决firebase图像问题。

我该如何解决?

编辑: 找到文档中firebase问题的答案: https://github.com/codepath/android_guides/wiki/Displaying-Images-with-the-Picasso-Library

1 个答案:

答案 0 :(得分:1)

如果您要加载2400x2400像素图像,则需要加载大约16MB的数据。您当前正在使用的过程会将所有数据加载到内存中以显示它。显然,您尝试运行此代码的手机并没有可用的内存量。

Picasso documentation on dealing with OutOfMemory errors while loading an image有一大块。其中一些方法调整图像大小以减少内存使用量,因此这些方法应该是减少内存使用量的一种方法。