应用被杀死时,Glide Cache不会持久

Mag*_*nas 5 android caching android-glide

我正在监视与Charles的网络通话。

我有一个GlideModule通过覆盖applyOption(...)来更改缓存文件夹,如下所示:

    @Override
public void applyOptions(Context context, GlideBuilder builder) {
    builder.setDiskCache(
            new InternalCacheDiskCacheFactory(context, "/media/", 1500000)
    );
}
Run Code Online (Sandbox Code Playgroud)

然后,当我在应用程序中时,我会进行Glide图像加载,并且缓存工作正常。这是一个例子:

Glide.with(this)
            .load("http://www.wired.com/wp-content/uploads/2015/09/google-logo.jpg")
            .into(mImageView);
Run Code Online (Sandbox Code Playgroud)

只有第一个呼叫才进行网络呼叫,然后使用缓存对其进行检索。但是,如果我终止了该应用程序,然后重新启动它,而不是继续使用缓存,该应用程序将进行新的Web调用。缓存不是应该在内部存储中永久存在吗?

nav*_*vid 0

增加 diskCacheSize 并看看会发生什么。1500000是1.5mb,它可以包含有限数量的图片(取决于每个尺寸)。当达到限制时,旧的缓存图像将被新的图像替换。

因此,无论 diskCacheSize 有多大,当超过它时,旧的缓存图像将被新的缓存图像替换。

另请注意,除了“磁盘缓存”之外,Glide 还将图像保留在内存中,直到满足某些条件才能释放它们(活动终止、内存不足……)。这就是为什么当应用程序处于活动状态时它不会再次下载未缓存的图像,因为它通过内存访问它们。