android - 我的 Android 应用存在内存问题

标签 android bitmap out-of-memory

您好,我的 Android 应用程序在我的 Lenovo a319 设备上运行良好,在该设备上它同时在 Galaxy s5 设备上消耗 40 MB RAM,对于相同的构建 (apk) 消耗 300 Mb。而且我收到很多错误,例如 Galaxy s5 设备上的内存问题。

例如

Out of memory

异常和

android.view.InflateException: Binary XML file line

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

编辑: 感谢您的回答,但它们不准确我重用回收位图并将它们设为空,甚至调用 system.gc();而且我的内存力是恒定的,我只是不明白为什么在 sumasung galxy s5 上需要 300 MB 的 ram 而在我的 lenovo 上只需要 40 MB。我的 lenovo 是 hdpi s5 如果我确定是 xxhdpi。

最佳答案

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

关于android - 我的 Android 应用存在内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29490510/

相关文章:

java - "bitmap size exceeds 32bits"在 KitKat 设备上的 buildDrawingCache

android:用 picasso 创建圆形图像

java - 当我的动态壁纸超过 30 帧时出现内存不足错误

maven - 运行 mvn sonar:sonar -X 时无法执行 Findbugs : java. lang.OutOfMemoryError : Java heap space,

java - 使用 picasso 重新加载图像

android - 更改警报对话框中的文本颜色?

android - 使用 CRNA 启动和发布 React Native 项目

Javascript 菜单向左移动并在 Android 浏览器的屏幕右侧显示间隙

android - Lazy List 上的位图缓存(SoftReference,Hard)似乎无法正常工作 - Android

java - 堆栈帧大小是否有上限