Fresco Android中的图像缓存是什么时候从磁盘中删除?

4

我需要知道在Fresco缓存中,URI的缓存版本会在磁盘上保存多长时间?


1
为什么不去问它的开发者呢? - Vladyslav Matviienko
请参考文档 - Rahul Tiwari
我在文档中找不到任何相关的参考 :( - Whats Tools
与其他缓存不同的是,当您的应用程序进入后台、退出甚至设备关闭时,此缓存不会被清除。当然,用户可以随时从Android的设置菜单中清除它。 - Blackbelt
1
关键是,我需要知道它是否会自动清除。也许是24小时后,还是10天? - Whats Tools
请问缓存中的文件是否有任何生存时间选项? - Whats Tools
1个回答

4
正如在http://frescolib.org/docs/caching.html#trimming-the-caches中所述:
当配置图像管道时,可以设置每个缓存的最大大小。但有时您可能希望将其降低。例如,您的应用程序可能具有其他类型数据的缓存,这些数据可能需要更多空间并挤出Fresco的缓存。或者您可能正在检查设备整体是否即将耗尽存储空间。
Fresco的缓存实现了DiskTrimmable或MemoryTrimmable接口。这些是您的应用程序可以告诉它们进行紧急逐出的钩子。
然后,您的应用程序可以使用实现DiskTrimmableRegistry和MemoryTrimmableRegistry接口的对象来配置管道。
这些对象必须保持修剪列表。它们必须使用特定于应用程序的逻辑来确定何时必须保留内存或磁盘空间。然后,它们通知修剪对象执行修剪。
因此,如果在配置ImagePipeline时未指定DiskTrimmable或MemoryTrimmable,则将使用默认值DiskTrimmable、MemoryTrimmable。因此,在查找源代码的默认值后,我发现了这一点:
private static DiskCacheConfig getDefaultMainDiskCacheConfig(final Context context) {
    return DiskCacheConfig.newBuilder()
        .setBaseDirectoryPathSupplier(
            new Supplier<File>() {
              @Override
              public File get() {
                return context.getApplicationContext().getCacheDir();
              }
            })
        .setBaseDirectoryName("image_cache")
        .setMaxCacheSize(40 * ByteConstants.MB)
        .setMaxCacheSizeOnLowDiskSpace(10 * ByteConstants.MB)
        .setMaxCacheSizeOnVeryLowDiskSpace(2 * ByteConstants.MB)
        .build();
  }

总结如下:当内存达到满载(40 ByteConstants.MB10 ByteConstants.MB2 ByteConstants.MB)时,Fresco将删除旧记录并写入新记录(图像)。 可能Fresco使用此方法


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接