Java Android布局OutOfMemoryError

Java Android布局OutOfMemoryError,java,android,android-layout,memory,bitmap,Java,Android,Android Layout,Memory,Bitmap,当加载包含大量图像视图的XML布局时,我得到了一个OutOfMemoryError。与大多数报告此错误的人不同,“我的布局”只是直接从Drawable文件夹加载ImageView,方法是将此XML属性放在每个ImageView(布局中大约有50个)上: 然后,我在活动对OnCreate的调用中一次加载所有布局 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

当加载包含大量图像视图的XML布局时,我得到了一个
OutOfMemoryError
。与大多数报告此错误的人不同,“我的布局”只是直接从Drawable文件夹加载ImageView,方法是将此XML属性放在每个ImageView(布局中大约有50个)上:

然后,我在活动对OnCreate的调用中一次加载所有布局

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);
}
即使遵循一些常见技巧(即将LargeHeap设置为true并减小图像大小),我仍然无法避免此错误。我只能假设这是图像大小为几KB并加载到大约50个ImageView中的结果

我无法进一步缩小图像的大小,也无法减少加载到其中的图像视图的数量。因为我是直接从Drawable文件夹加载的,所以Android指南中的提示或第三方图像加载工具(如)似乎也不太可能有帮助

如何避免此错误?

OutOfMemoryError 当无法满足内存请求时引发 使用可用的平台资源。可通过以下方式提出此类请求: 运行中的应用程序或虚拟机的内部功能

您正在处理大型位图,并在运行时加载所有位图。您必须非常小心地处理大型位图,方法是加载不需要一次加载整个位图的大小,然后进行缩放

请阅读此


很多图片。这就是为什么我想知道你的xml有多大。为什么你需要在一个屏幕上显示所有的图像?为什么不先只加载缩放后的图像?确定要将图像放入正确的密度文件夹中?
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);
}