【问题标题】:Image allocation OutOfMemoryError and crash in AndroidAndroid中的图像分配OutOfMemoryError和崩溃
【发布时间】:2016-02-01 16:58:22
【问题描述】:

我的应用程序出现与 OutOfMemoryError 和崩溃有关的问题。我已经实现了两个活动,第一个活动带有用于加载应用程序的徽标,第二个活动带有一些按钮和一个带有一些图标的弹出菜单。最近我遇到了这个弹出菜单的问题,当打开时会导致崩溃并出现“OutOfMemoryError”警告。在这次崩溃之前,我使用这个菜单没有错误,只重复了一个图像作为测试。当我用不同的图像更改此图像时,它开始崩溃。我已经添加了这个 android:largeHeap="true" 来显示是否有什么变化,最后菜单打开时不会崩溃,但滚动它时会滞后。在应用程序监控中,我在关闭菜单时使用了 112Mb,当我打开它时使用了 204Mb。我的可绘制对象中有 115 张图片(大部分未使用),在我当前的 Activity 中有大约 35 张处于活动状态,当我打开菜单时还有 16 张图片。总图像大小为 4Mb,总使用图像大小为 1Mb,总菜单图像大小为 350Kb。我是 Android 的新手,但也许我跳过了 Android 中 png 和内存之间的一些转换,但我很奇怪 16 个 24kB 的图像(ImageButton)与 android:layout_width="85dp" android:layout_height="90dp " 占用如此多的内存,让新时代的智能手机滞后。有了这么小的尺寸并且没有特定的代码(只有 xml 文件和一些用于构建 UI 的 java),我的记忆中怎么可能有这么大的数字?

【问题讨论】:

  • 图片文件的尺寸是多少? (不是 imageButtons 的尺寸)
  • menu 中的单个图像尺寸为 20.5Kb(磁盘上为 24Kb),455x498px。
  • 尝试不加载图像,看看它们是否确实是问题的原因,如果是,请尝试缩小它们的大小。
  • 是的,当没有加载图像时,我的内存分配大小没有变化。我可以缩小它们,但我有一个高清屏幕,如果我加载质量较低的图像,它是可见的。我不明白为什么 300Kb 变成 100Mb。

标签: android xml image


【解决方案1】:

可能你没有按照android标准的图标大小,或者图片太大了。

查看此链接以获取有关如何在 android 中使用标准尺寸的更多信息:http://iconhandbook.co.uk/reference/chart/android/

或者您可以使用 Universal Image Loader 来显示图像,请参阅此链接:https://github.com/nostra13/Android-Universal-Image-Loader

【讨论】:

    猜你喜欢
    • 2018-02-07
    • 2014-10-22
    • 1970-01-01
    • 2014-11-29
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    相关资源
    最近更新 更多