我不太明白recyclelerView和glide如何处理缓存信息和图像数据,所以我想知道是否有人可以提供帮助。
目前,我在实时数据库中存储有关我的图像的元数据。元数据具有足够的信息,可以创建存储引用并从数据库中提取正确的图像:
storageReference.child("users/uid/profile.png")
但是,我的问题是关于firebaseUI元素:
Glide.with(this)
.using(new FirebaseImageLoader())
.load(storageReference)
.into(imageView);
所以我将图像添加到我的recyclerview中,如下所示:
for (ProfileCard card : localDB.getAllCards()) {
profileCards.add(1, card);
adapter.notifyItemInserted(1);
}
现在,每当我离开这个卡片所在的活动时,活动就会被摧毁。在类的onCreate中,再次调用for循环。因此,当我执行adapter.notifyItemInserted(1);
时,将调用适配器并再次调用用于添加图片的滑动功能。
所以我的问题是每次我销毁并重新创建活动,然后在调用滑动方法时再次添加卡片它是否向存储桶请求再次下载图像?如果不是会发生什么?如果图像存储在缓存中这个缓存有多大?
非常感谢任何帮助
答案 0 :(得分:1)
如果您通读the project wiki on GitHub,可以回答有关Glide的许多答案。
当Glide获取图像时,它将在本地缓存在内存和磁盘上。你可以configure the sizes of these caches。以下是文档对默认磁盘高速缓存大小的说明:
内部缓存工厂将磁盘缓存放在应用程序中 内部缓存目录并设置最大大小为250MB。
对于内存缓存:
默认大小由MemorySizeCalculator类决定。该 MemorySizeCalculator类考虑了屏幕大小 给定设备的可用内存以提供合理的默认值 尺寸。
预计事情将会反复建立和拆除。这就是存在这些缓存的原因。