我正在与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调用,然后使用缓存来检索它。 但是,如果我杀了应用程序然后重新启动它,而不是继续使用缓存,应用程序将进行新的Web呼叫。 缓存是否应该在内部存储中持久存在?
答案 0 :(得分:1)
Glide.with(fragment)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageView);
答案 1 :(得分:0)
增加diskCacheSize并查看会发生什么。 1500000是1.5mb,它只能包含有限数量的图片(取决于每个大小)。当达到限制时,旧的缓存图像将被新的图像替换。
因此,无论diskCacheSize有多大,当超出时,旧的缓存映像将被新的替换。
还请注意,除了“磁盘缓存”之外,Glide还会将图像保留在内存中,直到满足某些条件才能释放它们(活动终止,内存不足等)。这就是为什么它在应用程序处于活动状态时不会再次下载未缓存的图像的原因,因为它会通过内存访问它们。
答案 2 :(得分:0)
是的,这是glide lib的基本功能,它在首次下载图像时会获取所有缓存,然后在其下次每次从其缓存中获取图像时提供
。如果您仅面对问题,那么根据我的意见,如果您现有的系统不依赖行会,则应使用Picasso进行图像处理。
答案 3 :(得分:0)
您可以下载图像,并使用sqllite将其存储在应用程序的内部存储中,然后通过“ .load()”中的本地URL从那里加载图像。
但是在这里,每次滑行呼叫时,它都是直接使用URL加载图像 因为您在“ .load()”方法中传递了URL,所以它不仅会在重新启动应用程序后进行网络调用,而且还会使Web调用在应用程序中获得调用的时间很短,就像您在回收者视图中使用它一样。