Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase+;滑动,缓存策略_Android_Firebase_Caching_Firebase Storage_Android Glide - Fatal编程技术网

Android Firebase+;滑动,缓存策略

Android Firebase+;滑动,缓存策略,android,firebase,caching,firebase-storage,android-glide,Android,Firebase,Caching,Firebase Storage,Android Glide,我使用Glide和Firebase加载和兑现图像。通常,我使用图像创建时间,然后确定缓存时间。但在Firebase中,我只能使用第二个请求getMetadata()来获得创建时间。当我在存储器中将一个图像更改为另一个具有相同名称的图像时,如何正确进行缓存?我应该使用getMetadata()还是有其他方法 Glide.with(getContext()) .using(new FirebaseImageLoader())

我使用Glide和Firebase加载和兑现图像。通常,我使用图像创建时间,然后确定缓存时间。但在Firebase中,我只能使用第二个请求
getMetadata()
来获得创建时间。当我在存储器中将一个图像更改为另一个具有相同名称的图像时,如何正确进行缓存?我应该使用
getMetadata()
还是有其他方法

  Glide.with(getContext())
                    .using(new FirebaseImageLoader())
                    .load(storageReference.child(item.getImageUrl()))
                    .placeholder(R.drawable.category_image_not_found)
                    .signature(???)
                    .into(image);

从我记事起,我就一直处于类似的境地!使用
getMetadata()
速度慢,会导致延迟。我想的是,为了使我的图像保持最新,除了合并实时数据库之外,别无选择。这可以通过以下方式之一完成:-

第一:

每当编辑特定存储位置的图像时,您都会在实时数据库中更新该图像节点的时间戳。当您想要显示图像时,只需下载其时间戳并编写一个与您提到的类似的
Glide.signature(timestamp)
方法

第二:

只要在上传/编辑图像时获取图像的下载URL,并将URL保存在实时数据库中即可。这样,每当更新图像时,就会将不同的URL保存到同一位置。这可以保证缓存不会显示过时的图像(更改源URL是使Glide缓存无效的建议方法)

我知道,首先从实时数据库检索数据,然后下载图像可能会带来开销。然而,这是使用Glide+Firebase时唯一的方法。此外,启用持久性和其他实时数据库怪癖可以使其无缝快速