在android中,许多图像加载库(如Picasso - 使用2%的存储空间用于磁盘缓存,Glide)除了在内存lru缓存中使用磁盘缓存。我可以理解为什么这对从网络下载的图像有用 - 如果内存缓存已满,从磁盘读取而不是远程获取它们 - 从而避免网络延迟等。但是,如果我们只是读取本地图像在Android设备本身 - 我们通过使用单独的磁盘缓存与序列化的位图数据获得任何东西 - 因为必须从磁盘读取数据?如果您的应用需要缩略图并对原始图像进行一次子采样并将其存储在缓存中,可能会有意义吗?是否有任何研究显示性能增加。我见过在googles samples和其他bitmap cache库中使用磁盘缓存。
答案 0 :(得分:0)
所以这里有一些我在AOSP docs中找到的参考:
内存缓存对于加快对最近查看的访问非常有用 位图,但您不能依赖于此处可用的图像 缓存。具有较大数据集的GridView等组件可以轻松填充 内存缓存。您的申请可能被另一个人打断 任务就像一个电话,而在后台可能会被杀死 并且内存缓存被破坏了。一旦用户恢复,你的 应用程序必须再次处理每个图像。
在这些情况下,可以使用磁盘缓存来保留已处理的位图 并帮助减少图像不再可用的加载时间 在内存缓存中。当然,从磁盘中获取图像要慢于 从内存加载,应该在后台线程中完成,如磁盘 阅读时间可能无法预测。