描述背景,因为我可能对这个问题有一个糟糕的方法——自我学习。
我正在为 android 编写一个应用程序,并在默认 AVD 上对其进行测试,默认 AVD 设置为 WVGA800,“设备内存大小”为 512,“抽象 LCD 密度”为 240。
我有一些图像,我将它们放入 drawable-hdpi 中。该文件夹中有 458 KB(不是 MB)的图像。所有图像均为PNG格式。
问题是,当我尝试加载最大的图像(用于背景)时,它会抛出:java.lang.OutOfMemoryError
这是加载图像的调用:
BitmapFactory.decodeResource(status.getResources(), R.drawable.background);
这与我加载其余图像(总共 33 个)的方式相同。
这对我来说很有意义,它会在最大图像上耗尽内存,但我的文件夹总大小为 458 KB,所以我不希望设备上设置的 512 MB Ram 用完。
我从不卸载任何图像,我保持它们加载,并根据需要使用。我之前写了一个不同的应用程序,其中我的图像总大小为 563 KB,总共 82 个图像,我没有这个问题(使用相同的 AVD)。事实上,以前的应用程序过去常常通过翻转每个图像来制作几个副本,并且仍然没有用完空间。当前应用程序在初始加载时失败 - 在发生很多事情之前。
有人可以指出问题可能是什么吗?以及我如何解决它,或者可能提到我的方法是否错误(通过示例自学)