【发布时间】:2014-01-11 09:45:32
【问题描述】:
我知道它在这里被问了很多次,我经历了很多答案,但没有理解1个想法。
我正在尝试在 ImageView
<ImageView
android:id="@+id/bg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/bg" />
而 bg.jpg 是 650 k.b in size with 1600 x 1700 WxH resolution placed in drawable folder。
我在少数设备上遇到内存不足错误。
我的印象是内存大小很重要,而 650 k.b 并不多。但是当我读到Displaying Bitmaps Efficiently 和Loading Large Bitmaps Efficiently 时:看起来分辨率才是最重要的。如果根据这些页面配置为 ARGB_8888,我的图像将占用 1600 x 1700 x 4 字节,即超过 10 m.b
所以,
即使 10 m.b 小于每个应用程序的 16 m.b 限制,为什么它会给我这个错误?
如上述链接中所述,如果我缩小图像,有些设备的分辨率为 1200 x 2000 WxH,而我将无法进行缩放,因此会出现相同的错误。
我看到应用程序加载了多个全屏图像(可滚动),而我只使用了 1 个 :(
我错过了什么?
【问题讨论】:
-
试试这个,只需在清单文件中添加 android:largeHeap="true" this 来增加堆内存。也许它会起作用,我不确定天气会不会起作用。但这只是您可以尝试的一种解决方案。
-
即使有效,我也不想按照here的解释使用这个解决方案@
-
厌倦了所有 largeHeap 答案,这些答案总是 OOM 问题中的第一个答案,这只是隐藏症状,而不是治愈它们!
标签: android bitmap android-imageview out-of-memory