1

在android中,许多图像加载库(例如Picasso--使用2%的磁盘缓存存储空间,Glide)除了在内存lru缓存中使用磁盘缓存。我可以理解为什么这可能对从网络下载的图像有用 - 如果内存缓存已满,请从磁盘读取而不是远程读取它们 - 从而避免网络延迟等。但是,如果我们只是读取本地映像在Android设备本身 - 我们通过使用单独的磁盘缓存与序列化的位图数据获得任何东西 - 因为数据必须从磁盘读取?如果您的应用需要缩略图并对原始图像进行二次采样并将其存储在缓存中,可能有意义吗?有没有研究显示性能增益。我看到在googles samples和其他bitmap cache库中使用了磁盘缓存。DiskLRUCache适用于Android中的位图(以及其他)

+0

伟大的主题。我从设备加载缩略图时出现OutOfMemory问题,处理图像时我总是使用Glide或Picasso,但我注意到Piccasso在处理大图像时,我仍然有时会遇到内存不足的问题。如果有更多关于思​​考的知识可以回答,那会很好。 –

回答

0

所以这里有一些裁判我在AOSP docs发现:

内存缓存中加快访问最近查看 位图是有用的,但你不能依赖于图像在此 缓存可用。具有较大数据集的像GridView这样的组件可以轻松填充内存缓存中的 。您的应用程序可能会被另一个 任务打断,并且在后台可能会中止 ,并且内存缓存被破坏。一旦用户恢复,您的应用程序必须再次处理每个图像。

磁盘高速缓存可以在这些情况下被用来处理持久位图 并有助于减少加载时间如果照片不再在内存高速缓存可 。当然,从磁盘读取图像比从内存中加载 要慢,并且应该在后台线程中完成,因为读取次数可能无法预测。

相关问题