OutOfMemory Exception Android VectorBitmap

时间:2016-02-02 20:59:34

标签: android android-activity out-of-memory android-vectordrawable

我正在使用vectordrawable来显示图像。图像是与app(apk)捆绑在一起的所有资源。我的问题是,每次新活动的内存都会大大增加,直到应用程序崩溃并出现OutOffMemoryException。

java.lang.OutOfMemoryError
    at android.graphics.Bitmap.nativeCreate(Native Method)
    at android.graphics.Bitmap.createBitmap(Bitmap.java:903)
    at android.graphics.Bitmap.createBitmap(Bitmap.java:880)
    at android.graphics.Bitmap.createBitmap(Bitmap.java:847)

我已经调查了MAT的内存泄漏,但没有找到比位图错误更多的东西。

显示vectordrawables的效率方法有哪些?也许我的应用程序的一般架构不适合活动生命周期?

我没有找到关于其他应用程序(facebook,aibnb,whatsapp,...)的常见内存消息的任何信息。我的用法大约是40-70MB。

1 个答案:

答案 0 :(得分:1)

处理图像时需要注意以下几点:

  1. 每次展示图片时,您是否正在加载图片?这可能是一种非常耗费内存的操作。最好将图像加载到内存中一次,然后在应用程序中重复使用它们。
  2. 您是否正在清理不再使用的图像占用的内存?如果您确定不再需要图像,则应通过调用bitmap.recycle()来清理分配的位图内存。这使位图无效并释放所有占用的内存,使其可用于其他操作。
  3. 图片太大了吗?单个图像的最大尺寸有限制。尝试加载更大的图像也会导致OutOfMemoryError,即使内存可用。在这种情况下,您可能希望优化您尝试加载的图像文件。
  4. 浏览您的应用并逐一检查这些潜在问题。此外,还有适用于Android平台的良好分析工具。它们可以向您展示内存管理的潜在问题,例如过多的内存分配等。

    祝你好运。