2016-04-24 90 views
1

我有1920 * 1080分辨率一个3MB图像,当我试图在真实设备(441 PPI & 5.5英寸屏幕:Oneplus2设备)加载这个图像,它工作正常。 但是,当我在仿真器设备上运行此代码(1GB Ram | 441 PPI密度| 5.5英寸屏幕)时,我得到OutOfMemoryError。 我通过XML将图像加载到我的RelativeLAyout的背景。的OutOfMemoryError在Android模拟器设备

我检查了Devloper.android有效地加载位图,但对我来说并不是很清楚。 所以你可以帮我一把。

+0

集largeHeap应用标签和阅读这:http://developer.android.com/intl/vi/training/displaying-bitmaps/load-bitmap.html –

+0

位图需要图像数据以未压缩的形式,因此至少8MB大。文件系统上的3MB是无关紧要的。 – Henry

+0

如果我将分配大堆,那么它不会是聪明的想法,因为应用程序将消耗大量的内存,它会使设备上的性能下降,并随后崩溃 –

回答

1

它发生在设备到设备上我有类似的问题。在我的索尼Xperia C(1GB RAM)上,一切正常,但它在Xiomi Redmi(2GB RAM)中提供了OOM。

然后,我做了各种痛苦的研究,如何load Bitmap efficiently和最终使用Glide图书馆,从那时起,我从来没有看到我的项目中的任何OOM。

集成简单只需在任何大小的项目和加载位图只需添加Jar: -

ImageView imageView = (ImageView) findViewById(R.id.my_image_view); 

    Glide.with(this).load("url to 3 MB image").into(imageView); 

您可以在AndroidManifest在阅读所有关于滑行这里https://futurestud.io/blog/glide-getting-started