当应用被杀死时,Glide Cache不会持续存在

问题描述 投票:7回答:4

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

我有一个GlideModule通过像这样重写applyOption(...)来更改缓存文件夹:

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

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

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

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

android caching android-glide
4个回答
0
投票

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

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

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


0
投票

是的,这是glide lib的基本功能,它在首次下载图像时会获取所有缓存,然后在其下次每次从其缓存中为您提供图像时。

如果您仅面对问题,那么根据我的观点,如果您现有的系统不依赖行会,则应该使用Picasso进行图像处理。


0
投票

您可以下载图像,并使用sqllite将其存储在应用程序的内部存储中,然后从中加载图像,并在“ .load()”中传递本地URL。

但是在每次滑行呼叫时,它都是直接使用URL加载图像因为您在“ .load()”方法中传递了URL,所以它不仅会在重新启动应用程序后进行网络调用,而且还会使Web调用在应用程序中获得调用的时间很短,就像您在“回收者”视图中使用它一样。


0
投票
Glide.with(fragment)
  .load(url)
  .diskCacheStrategy(DiskCacheStrategy.ALL)
  .into(imageView);
© www.soinside.com 2019 - 2024. All rights reserved.