我从Android电子市场获得了一个经典的“VM预算超出内存 - 内存不足”类型错误崩溃报告。
我一遍又一遍地检查了应用程序的内存泄漏情况。此错误发生在总应用程序安装的极小百分比中,大约1-2%,并且始终在启动时发生。该应用程序为每个活动从内部内存加载一些位图,但在大多数设备上都不会崩溃。我认为所有应用程序都保证了位图的最小堆栈大小,所以这应该适用于每个设备。 Min SDK是7。
有什么理由?这听起来对任何人来说都很熟悉吗?
答案 0 :(得分:0)
我遇到了类似的问题,而且我的图片对某些设备来说太大了。
我已经读过每个Activity
有一个图像,我猜这种情况会在从一个图像切换到另一个图像时发生,因为新分配的Drawable
不适合。为了节省一些内存,你可以做的是卸载未显示的Activities
的背景图片:
@Override
protected void onResume() {
super.onResume();
Drawable d = loadMyDrawableFromDisk();
setBackgroundDrawable(d);
}
@Override
protected void onPause {
setBackgroundDrawable(null);
super.onPause();
}
这可能会有所帮助,因为在调用onPause()
之后将释放一些内存,而不会在系统未分配View
的基础Activity
时释放内存。