在fresco android中,什么时候从磁盘中删除图像缓存?



我需要知道一个缓存版本的URI会在磁盘上多长时间在壁画缓存?

在http://frescolib.org/docs/caching.html#trimming-the-caches:

配置镜像管道时,可以设置的最大大小每个缓存。但有时你可能会想离开比这个还要低。例如,您的应用程序可能有以下缓存其他类型的数据可能需要更多的空间,会挤掉Fresco的数据。或者你可能会检查设备是否作为一个整体正在运行存储空间不足。

Fresco的缓存实现disktrimable或memorytrimable接口。这些是你的应用程序可以告诉它们去做的钩子紧急驱逐。

然后你的应用程序可以用对象来配置管道实现了DiskTrimmableRegistry和MemoryTrimmableRegistry接口。

这些对象必须保存一个可裁剪对象列表。他们必须使用特定于应用程序的逻辑,以确定何时必须使用内存或磁盘空间保存了下来。然后通知可裁剪对象执行它们的修剪。

所以,如果你不指定 disktrimable或memorytrimable 而配置你的ImagePipeline将使用默认的 disktrimable, memorytrimable 。因此,在查找源代码中的默认值后,我发现了以下内容:

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 bytecconstants)。MB10个bytecconstants。MB2 bytecconstants .MB) - Fresco将删除旧记录并写入新记录(图像)。也许Fresco用的是这个方法

最新更新