我正在构建一个具有非常大尺寸图像的应用程序。
我的几乎所有 UI 组件都是由 ImageView 组成的。
我只需要在第一个 Activity 中显示 12 个图像(ui 组件),但启动时会消耗 80mb。
使用 Android Drawable Importer 将图像分为每个可绘制目录。
通过这样做,我能够将运行时内存(我可以在 Android studio 的设备监视器上看到)减少一半,但它仍然消耗 80~120mb 的内存,我认为这太多了。
第一个问题是,80~120mb 对于四屏(两个 Activity,三个 Fragment)应用程序来说是不是太多了?
第二个是,如果太多了,我可以做什么以及如何减少内存使用?
最佳答案
处理图像时请记住,压缩格式(jpg、png..)和位图之间存在巨大差异。计算位图的大小非常简单,它是宽度 * 高度 * 4 字节(假设位图具有默认配置 argb888)。因此,压缩后的全高清图像为 xy kb,解压缩后将占用 8294400 字节(~8mb)。所以我减少内存消耗的建议是......缩小你的图像。
你问80-120 mb是否太多了,嗯,看起来很多,但这实际上取决于你的需求正在做。如果强制垃圾回收会发生什么(设备监视器中应该有一个图标)?
另一个需要考虑的是如何解压图像,引用 this并使用库(Picasso、Glide..)。
关于Android UI图像内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38950234/