我有一项活动,其中我使用了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
答案 0 :(得分:1)
如果您要加载2400x2400像素图像,则需要加载大约16MB的数据。您当前正在使用的过程会将所有数据加载到内存中以显示它。显然,您尝试运行此代码的手机并没有可用的内存量。
Picasso documentation on dealing with OutOfMemory
errors while loading an image有一大块。其中一些方法调整图像大小以减少内存使用量,因此这些方法应该是减少内存使用量的一种方法。