Android 与FirebaseStorage一起滑动,即使在线也无法获取最新照片

Android 与FirebaseStorage一起滑动,即使在线也无法获取最新照片,android,firebase,firebase-storage,android-glide,Android,Firebase,Firebase Storage,Android Glide,我正在使用Glide和FirebaseStorage获取存储在FirebaseStorage中的照片并在应用程序中显示。问题是,当照片在存储器中更新时,更新的照片不会被提取,而旧照片会显示在应用程序中。该设备处于联机状态,且其从未更新最新照片 thirdPhotoStorageReference = FirebaseStorage.getInstance().reference.child("photos/${key}/3.jpg") GlideApp.with(this)

我正在使用Glide和FirebaseStorage获取存储在FirebaseStorage中的照片并在应用程序中显示。问题是,当照片在存储器中更新时,更新的照片不会被提取,而旧照片会显示在应用程序中。该设备处于联机状态,且其从未更新最新照片

thirdPhotoStorageReference = FirebaseStorage.getInstance().reference.child("photos/${key}/3.jpg")

GlideApp.with(this)
                    .load(thirdPhotoStorageReference)
                    .override(screenWidth, screenHeight)
                    .listener(object : RequestListener<Drawable> {
                        override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {

                            showPhotoImageView(thirdPhotoImageView)
                            return false
                        }

                        override fun onLoadFailed(e: GlideException?, model: Any?, target: com.bumptech.glide.request.target.Target<Drawable>?, isFirstResource: Boolean): Boolean {

                            hidePhotoImageView(thirdPhotoImageView)

                            return false
                        }
                    })
                    .placeholder(circularProgressDrawable3)
                    .centerCrop()
                    .into(thirdPhotoImageView)
感谢您的帮助。
注意:当我更新照片时,它会将现有的photo 3.jpg替换为最新版本。

找到了解决问题的方法,并在有人有相同问题时发布

我能够使用Glide的签名功能获得更新的照片。请参阅下面的代码

thirdPhotoStorageReference.metadata.addOnSuccessListener {

                GlideApp.with(this)
                        .load(thirdPhotoStorageReference)
                        .signature(ObjectKey(it.updatedTimeMillis))
                        .override(screenWidth, screenHeight)
                        .listener(object : RequestListener<Drawable> {
                            override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {

                                showPhotoImageView(thirdPhotoImageView)
                                return false
                            }

                            override fun onLoadFailed(e: GlideException?, model: Any?, target: com.bumptech.glide.request.target.Target<Drawable>?, isFirstResource: Boolean): Boolean {

                                hidePhotoImageView(thirdPhotoImageView)

                                return false
                            }
                        })
                        .placeholder(circularProgressDrawable3)
                        .centerCrop()
                        .into(thirdPhotoImageView)

            }
thirdphotostragereference.metadata.addOnSuccessListener{
GlideApp.with(这个)
.加载(第三张照片参考)
.signature(ObjectKey(it.updatedTimeMillis))
.覆盖(屏幕宽度、屏幕高度)
.listener(对象:RequestListener{
覆盖onResourceReady(资源:可绘制?、模型:任意?、目标:目标?、数据源:数据源?、isFirstResource:Boolean):布尔{
showPhotoImageView(第三张照片图像视图)
返回错误
}
重写fun onLoadFailed(e:GlideException?,型号:Any?,目标:com.bumptech.glide.request.target.target?,isFirstResource:Boolean):布尔{
hidePhotoImageView(第三个照片图像视图)
返回错误
}
})
.占位符(CircularProgressDrawable 3)
.centerCrop()
.进入(第三张照片图像视图)
}

这里的关键是
签名(ObjectKey(it.updatedTimeMillis))
,它获取存储对象的更新时间,并让glide刷新它。

听起来glide正在缓存图像,这通常对性能和成本管理是一件好事。是的,看起来图像正在设备上缓存。但同时,我希望在更新FirebaseStorage中的实际文件时更新它们。不知道怎么做。你必须建立一种查询方法,告诉你底层内容是否发生了变化。
thirdPhotoStorageReference.metadata.addOnSuccessListener {

                GlideApp.with(this)
                        .load(thirdPhotoStorageReference)
                        .signature(ObjectKey(it.updatedTimeMillis))
                        .override(screenWidth, screenHeight)
                        .listener(object : RequestListener<Drawable> {
                            override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {

                                showPhotoImageView(thirdPhotoImageView)
                                return false
                            }

                            override fun onLoadFailed(e: GlideException?, model: Any?, target: com.bumptech.glide.request.target.Target<Drawable>?, isFirstResource: Boolean): Boolean {

                                hidePhotoImageView(thirdPhotoImageView)

                                return false
                            }
                        })
                        .placeholder(circularProgressDrawable3)
                        .centerCrop()
                        .into(thirdPhotoImageView)

            }