1

我是 Android 开发的新手。我的应用程序有我想从 Internet 下载和显示图像的用例。我正在使用 Kotlin 构建 App,并决定使用 Coil 库作为图像加载库。在使用我的应用程序时,用户的操作触发了多个图像的下载。这些图像加载库如何确保内存/缓存/磁盘空间不会被填满?这些库是否清除/删除上次使用期间下载的图像?

4

1 回答 1

2

答案将取决于特定的库。但一般来说,他们将图像下载到文件中,作为磁盘缓存。该磁盘缓存通常在大小方面保持一定的限制,文件在 LRU(最近最少使用)的基础上被删除。然后他们可以对内存中的表示做同样的事情,将最后 N 兆字节的图像缓存在一个池中,在需要时基于 LRU 弹出。从缓存中弹出它们可能会也可能不会完全从内存中删除它们——这取决于客户端代码是否维护了对该对象的任何其他引用。一些库允许对此进行可配置行为,允许客户端代码设置大小限制或提供整个缓存实现。

空间仍然有可能被填满。特别是内存——如果你有太多的位图打开并用完所有可用的堆,那么无论加载库做什么,你都会OOM。加载库的作用是防止对同一图像的多个网络请求,并防止您必须手动进行所有缓存管理。

于 2022-02-10T05:40:53.753 回答