2016-08-15 62 views
2

我正在构建具有非常大尺寸图像的应用程序。我几乎所有的UI组件都是由ImageViews组成的。Android UI图像内存问题

我只需要在我的第一个活动中显示12个图像(ui组件),但它在启动时消耗80mb。

使用Android Drawable Importer将图像分成每个可绘制目录。

通过这样做,我能够将运行时内存(我可以在Android工作室的设备显示器上看到)减少到一半,但仍然消耗80〜120mb的内存,我相信这太多了。

第一个问题是,对于一个四屏(两个活动,三个片段)应用程序,是不是80〜120mb太多?

第二是,如果它太多,我该怎么做以减少内存使用量?

+0

如何使用像Glide一样的图像加载器库?滑动显示图像时在内存管理方面非常出色 – faruk

回答

3

处理图像时请记住,压缩格式(jpg,png ..)和位图之间存在巨大差异。计算位图的大小非常简单,它的宽度*高度* 4个字节(假设位图具有默认配置argb888)。因此,一个完整的高清图像压缩为xy kb,解压缩时将占用8294400字节(〜8mb)。所以我的建议是减少内存消耗量......缩小你的图像。

你在问80-120 MB是否太多了,看起来好像很多,但这取决于你在做什么。如果强制进行垃圾回收会发生什么情况(设备监视器中应该有一个图标)?

要考虑的另一件事是如何解压缩图像,请参阅this并使用库(Picasso,Glide ..)。