2

我正在使用 vectordrawable 来显示图像。图像是与应用程序(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。

4

1 回答 1

1

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

  1. 你每次展示图片时都加载图片吗?这可能是一个潜在的非常消耗内存的操作。最好将图像加载到内存中一次,然后在整个应用程序中重复使用它们。
  2. 您是否正在清理不再使用的图像占用的内存?如果您确定不再需要某个图像,您应该通过调用来清理分配的位图内存bitmap.recycle()。这会使位图无效并释放所有占用的内存,使其可用于其他操作。
  3. 图片是不是太大了?单个图像的最大尺寸有限制。尝试加载更大的图像也会导致OutOfMemoryError,即使内存可用。在这种情况下,您可能需要优化您尝试加载的图像文件。

浏览您的应用程序并一一检查这些潜在问题。此外,Android 平台也有很好的分析工具。它们可以向您展示内存管理的潜在问题,例如过多的内存分配等。

祝你好运。

于 2016-02-02T21:08:19.667 回答