我的Android应用程序存在一些内存问题,在启动时,根据Android Studio的内存跟踪工具,它已根据场合分配了50多MB。
跟踪工具报告其中很大一部分是因为我的背景图片和我的5个ImageButtons。
我无法理解为什么,因为我的照片是:
背景: 184 kb,变为40 MB
imageButtons:每个10kb(其中5个),它们变成7MB和3MB
如果原来这么小的话,他们怎么能占用这么多MB?以及如何改进?
这个(附件)是我在跟踪工具中看到的
这就是我加载背景图片的方式,例如:
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/backgroundImage"
android:scaleType="centerCrop"
/>
答案 0 :(得分:0)
您可以通过将图像宽度乘以3(对于RGB)或乘以4(对于带有Alpha通道的RGB)估算未压缩图像的内存量
在我的应用程序中,我使用OpenGL ETC1 comppression作为背景。
宽x高|大小以字节为单位
1024x1024 | 524388
2048x2048 | 2097252
我认为这是将大图像存储在设备内存中并快速绘制它们的最有效方法。 我也没有看到不支持ETC 1压缩的Android设备。
这不是简单的方法,但最有效。
首先尝试减小图像的大小和颜色深度:)