[英]Image png from drawable resources -> Huge byte allocation & OOM
我构建了一个具有6页ViewPager的Android应用程序。 对于每个页面,都有一个小图像供我使用(不是背景,仅用于ImageView)。
这些图像每个约为130KB。 我注意到当此活动开始时,我会收到如下消息:
02-09 21:23:58.755: I/dalvikvm-heap(6478): Grow heap (frag case) to 49.015MB for 2457616-byte allocation
玩了一段时间之后,我也收到了OOM异常。
我不明白为什么这样大小的图像在加载时会占用很多空间。
有没有人遇到过这样的问题? 有什么办法吗?
提前致谢!
[更新]
不添加代码的歉意:)
以下是我在ViewPager中使用的片段的onCreateView:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(
R.layout.fragment_selection, container, false);
mSelectionImage = (ImageView) rootView
.findViewById(R.id.selection_image);
switch (mPageNumber) {
case 0:
mSelectionImage.setImageResource(R.drawable.img_sel_0);
break;
case 1:
mSelectionImage
.setImageResource(R.drawable.img_sel_1);
break;
case 2:
mSelectionImage.setImageResource(R.drawable.img_sel_2);
break;
case 3:
mSelectionImage
.setImageResource(R.drawable.img_sel_3);
break;
case 4:
mSelectionImage.setImageResource(R.drawable.img_sel_4);
break;
case 5:
mSelectionImage
.setImageResource(R.drawable.img_sel_5);
break;
default:
break;
}
return rootView;
}
您有6张图片,每张图片均为png,尺寸为398x538。
这意味着,默认情况下,它们全部使用6 * 4 * 398 * 538 = 5,138,976字节,约为5 MB。
这看起来似乎不是OOM的真正原因。
您能否告诉我们更多有关该应用程序以及其他可能导致这种情况的信息?
是否可以将文件置于drawable-ldpi或drawable-mdpi中?
在这种情况下,根据所运行设备的密度,图像将花费更多。
例如,如果将它们全部放入drawable-mdpi中,而设备仍在xdpi屏幕上运行,则将占用4倍的内存(因为我们将width和height都加倍了)。 它仍然还没有接近您拥有的50MB。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.