Android UI图像内存问题

标签 android performance android-resources android-bitmap

我正在构建一个具有非常大尺寸图像的应用程序。

我的几乎所有 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/

相关文章:

java - Android Studio 拒绝运行 main()

JQuery Mobile+Phone 差距 : How to implement a (table) list view with 2 sections

android - Libgdx 旋转纹理区域

python - 查看哪个 Python 类正在使用我的 100% CPU?

android - 使用 HttpUriRequest 与 HttpURLConnection 的优缺点是什么?

Android 通知播放 Assets 文件夹中的声音

不同值文件夹的Android Dimens值计算

android - 在 Android 上使用 "mobile phone numbers"查询联系人的最快方法

具有通用资源的 Android 库

Android MVP - 将字符串资源从演示者传递到 View