我的Android应用程序的内存问题

时间:2015-04-07 11:28:43

标签: android bitmap out-of-memory

您好我的Android应用程序在我的联想a319设备上工作正常,在此设备中它同时在Galaxy s5设备上消耗40 MB RAM,它在同一版本(apk)上消耗300 Mb。我收到很多错误,例如Galaxy s5设备上的内存问题。

For Instance

  

内存不足

例外和

  

android.view.InflateException:二进制XML文件行

错误。我发现这个Question ,高分辨率会导致内存异常,我无法从该问题中提供的答案中获得任何线索,请提供相同的支持吗?

修改 感谢您的答案,但他们是不妥协的我重复使用循环位图,我把它们变为空,甚至调用system.gc();我的记忆是不变的,我只是不明白为什么在sumasung galxy s5上需要300 MB的内存,而在我的联想上需要40。如果我确定的话,我的联想是hdpi s5是xxhdpi。

3 个答案:

答案 0 :(得分:2)

看起来您的应用是使用xml文件中定义的布局构建的。这些布局使用图像作为背景图像或ImageButtonImageView等源图像等。所有可绘制文件通常都存储在drawable-DENSITY个文件夹中。所以你需要降低所有drawable的分辨率以节省一些RAM。就像你有一些ImageView的drawable一样,我们可以把它称为new_image.jpg,它在drawable-hdpi中,它的分辨率是800x600 px,试着将它调整为400x300像素(你可以使用Farstone Image Viewer) 。对项目中的每个绘图都这样做,看看会发生什么 也可能是您使用某些ImageLoader(如Glide(推荐)或UIL或Picasso或其他任何用途)在ListViews中显示图像。这样的加载器通常会消耗大量的RAM(但是可以配置)以满足缓存需求,并且由于AOS无法加载,构建和表示一些使用图像的布局。 另外,我建议你to lern how to display Bitmaps efficiently 必须知道这些事情。

答案 1 :(得分:1)

这件事可以很容易解决这个问题

只需在清单文件

中的应用程序标记中添加此行

android:largeHeap="true"

像这样

<application android:largeHeap="true" android:allowBackup="true" ......

如果你想更优化你的代码,那么在eclipse中使用 Memory Analyzer

答案 2 :(得分:0)

除了位图和drawable之外,最常见的问题是通过Activity上下文泄漏内存。确保您没有将活动传递给回调侦听器。 MAT(Memory Analyzer Tool)是分析内存的好工具。它可以帮助您找出应用中的内存泄漏