如何减少Android中图像的内存使用
我有一个屏幕,我必须在屏幕上显示两个相似的图像。这两幅图像的大小都是动态的,但它们覆盖了大部分屏幕。当我在我的应用程序中导航到此屏幕时,我在AndroidStudio中看到内存监视器中出现了12MB的峰值,这意味着这两个图像都使用了12MB,因为该屏幕上没有其他UI元素,而且这两个图像相似,占用了相同的屏幕空间,我猜显示时每个图像都消耗了6MB的内存。在res目录中,这两幅图像的尺寸均为1174 x 1174像素,大小为396KB 我尝试过使用Glide,但当这些图像也通过Glide加载时,我看到了相同的内存峰值。如果应用程序试图占用比可用内存更多的内存,并且在我的应用程序的其他部分大量使用图像,那么Glide也帮不上忙。所以总是存在内存不足的问题,在显示这两幅图像的应用程序中,我发现了很多OutOfMemory异常如何减少Android中图像的内存使用,android,out-of-memory,image-loading,Android,Out Of Memory,Image Loading,我有一个屏幕,我必须在屏幕上显示两个相似的图像。这两幅图像的大小都是动态的,但它们覆盖了大部分屏幕。当我在我的应用程序中导航到此屏幕时,我在AndroidStudio中看到内存监视器中出现了12MB的峰值,这意味着这两个图像都使用了12MB,因为该屏幕上没有其他UI元素,而且这两个图像相似,占用了相同的屏幕空间,我猜显示时每个图像都消耗了6MB的内存。在res目录中,这两幅图像的尺寸均为1174 x 1174像素,大小为396KB 我尝试过使用Glide,但当这些图像也通过Glide加载时,我看
所以我的问题是如何减少这些图像的内存使用?还有,为什么图像在res文件夹中的大小为396KB时会占用6MB的内存?我猜您没有压缩图像,在图像压缩方面使用了非常好的技术。另外,我猜您确实使用了滑动缓存策略 但是,Glide会缓存原始的全分辨率图像以及该图像的其他较小版本。例如,如果您请求一个1000x1000像素的图像,并且您的ImageView是500x500像素,Glide将把这两个版本的图像都放在缓存中
希望这对您有所帮助。使用上述库,这些图像非常大。这很好,还可以尝试不缓存磁盘策略并跟踪更改。如果您的图像是可移植网络图形(PNG)或者JPEG首先考虑使用TypPyNG来应用压缩。您所发布的库只用于压缩存储中的文件,而应用程序中的图像驻留在可拖拉文件夹中。你提到过图像非常大,你能解释一下它们在什么意义上是大的吗?我使用TinyPng来缩小图像的大小,但仍然加载缩小的图像会消耗相同的内存量。这对我有影响。