【问题标题】:High Memory usage in Android Application (50MB)Android 应用程序中的高内存使用率 (50MB)
【发布时间】:2016-10-05 10:21:49
【问题描述】:

我正在为一个学校项目开发一个小型电子宠物蛋,但我对应用程序使用的内存量有很大的问题。起初我为应用程序分配了 200MB,经过一番研究,我得到了一个简单的解决方法,通过将可绘制文件夹重命名为 drawable-nodpi 将其减少到 50MB。但这仍然很多。在调查问题时,我确信它与我的布局和 UI 元素有关,因为我删除了所有代码并仅使用布局启动了我的应用程序,并且内存使用量根本没有下降。

在这里你可以看到我的布局:

图像大小平均约为 30kb,如果我计算内存中可能图像的最大大小,我大约有 1.5MB。

那么所有的内存是从哪里来的呢?这怎么可能?

如果您想自己查看应用程序,可以从 github 获取项目: https://github.com/kruben95/TamaStudent

如果有人可以帮助我或给我一些建议,我会很高兴。

【问题讨论】:

  • 避免使用高分辨率图片 (~1920x1080p)。他们疯狂地吃记忆。

标签: android android-layout android-studio memory mobile


【解决方案1】:

我下载了你的项目,这里有一些建议:

1) 图像的分辨率很高,即使在磁盘上它们占用 30-40 kb - 在内存中它们是位图,位图占用大量内存,例如身体部分 - 1200x1980 像素,每像素 4 个字节,这是 9,5内存中的兆字节!???现在,在获得此位图后,它还必须对其进行缩放-这是额外的内存,并且正如您所见,每张图像都有超过 10 兆字节!这是非常高的。

2) 降低图像的分辨率。不需要这么高分辨率显示它们。

3) 从图像中删除不可见的部分 - 因为我看到很大的部分很清晰 但它需要记忆!

4) 尝试以编程方式制作一些图像,例如圆圈等。

5) 在代码中 - 如果你只需要做背景,不要使用 alpha 来查看,直接在颜色中设置这个 alpha:#00FFFFFF - 这里是带有 alpha 0 的白色。如果你在视图上使用 alpha,它将需要用于重绘的额外内存(性能较低)。

6) 用标签Best practices 搜索相关主题的谷歌互联网,你会发现很多有用的信息)

【讨论】:

  • 感谢您的解释。明天会尝试并报告我的结果。
  • 现在我已经用嵌套布局和圆形表格替换了我的状态圆圈,这样我不仅减少了 12MB 的内存使用量,而且现在每个百分比都有正确的显示。在此之前,我每 10% 的步长只有 10 张图像。 2 苍蝇一击(德国谚语。不知道它是否存在于egnlish :D) 下一步是重新处理其他图像并降低分辨率。会接受你的回答。再次感谢:)
  • 完全没有,欢迎 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-02
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
  • 2016-06-02
  • 2012-03-28
  • 2011-05-15
相关资源
最近更新 更多