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

时间:2015-09-25 11:37:50

标签: android caching fresco

我需要知道在fresco缓存中磁盘的缓存版本会持续多长时间?

1 个答案:

答案 0 :(得分:3)

正如http://frescolib.org/docs/caching.html#trimming-the-caches所写:

  

配置图像管道时,可以设置最大大小   每个缓存。但有时你可能想去   低于那个。例如,您的应用程序可能有缓存   其他类型的数据,可能需要更多的空间,挤满了弗雷斯科。   或者您可能正在检查整个设备是否正在运行   超出存储空间。

     

Fresco的缓存实现DiskTrimmable或MemoryTrimmable   接口。这些是您的应用可以告诉他们做的钩子   紧急搬迁。

     

然后,您的应用程序可以使用对象配置管道   实现DiskTrimmableRegistry和MemoryTrimmableRegistry   接口

     

这些对象必须保留一个可修剪的列表。他们必须使用   特定于应用程序的逻辑,用于确定何时必须有内存或磁盘空间   保存。然后他们通知可修剪的物体进行他们的   饰件。

因此,如果您在配置时没有指定 DiskTrimmable或MemoryTrimmable ,您的ImagePipeline将使用默认的 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.MB 10 ByteConstants.MB 2 ByteConstants.MB ) - Fresco将删除旧记录并写入新记录(图像)。 也许Fresco使用this method