在 android 中,许多图像加载库(如Picasso——它使用 2% 的存储空间用于磁盘缓存,Glide)除了内存中的 lru 缓存外,还使用磁盘缓存。我可以理解为什么这可能对从网络下载的图像有用——如果内存缓存已满,请从磁盘读取它而不是远程获取它们——从而避免网络延迟等。但是,如果我们只是读取本地图像在android设备本身上——我们是否通过使用带有序列化位图数据的单独磁盘缓存获得任何东西——因为无论如何都必须从磁盘读取数据?如果您的应用需要缩略图并对原始图像进行二次采样并将其存储在缓存中,这可能是有意义的吗?是否有任何研究显示性能增益。我在google 示例中看到了磁盘缓存的使用和其他位图缓存库。
问问题
306 次
1 回答
0
所以这是我在AOSP 文档中找到的一些参考文献:
内存缓存有助于加快对最近查看的位图的访问速度,但是您不能依赖此缓存中可用的图像。具有较大数据集的 GridView 等组件很容易填满内存缓存。您的应用程序可能会被另一个任务(例如电话呼叫)中断,并且在后台它可能会被杀死并且内存缓存被破坏。一旦用户恢复,您的应用程序必须再次处理每个图像。
在这些情况下,可以使用磁盘缓存来保存已处理的位图,并帮助减少内存缓存中不再提供图像的加载时间。当然,从磁盘获取图像比从内存加载要慢,并且应该在后台线程中完成,因为磁盘读取时间可能无法预测。
于 2017-10-16T17:47:23.153 回答