【问题标题】:Clean Firebase cache using glide使用 glide 清理 Firebase 缓存
【发布时间】:2017-04-13 16:27:38
【问题描述】:

我使用 firebase 来存储与用户配置文件相关的图像,并且目前正在发生一些非常奇怪的事情,我的 drawables 中有一个默认图像,它显示在我每次我的 firebase 存储引用为空时的 imageview 中,否则它将使用 glide 来显示图像,但我删除了我在 firebase 的所有存储,它仍然显示我在数据库中的图像,为什么会这样?这与手机上的localStorage有关吗?怎么删除?

    storageRef = storage.getReferenceFromUrl("gs://friendlymanager-3b7a2.appspot.com/Photos/" + userId);


Uri path = Uri.parse("android.resource://com.esmad.pdm.friendlymanager/" + R.drawable.defaultuserimage);
Log.d("image2",storageRef + "/Photos/" + userId + ".jpg");
if(storageRef != null){
    Glide.with(this)
            .using(new FirebaseImageLoader())
            .load(storageRef)
            .error(R.drawable.defaultuserimage)
            .into(userImage);
}
else{
    userImage.setBackgroundResource(R.drawable.defaultuserimage);
}

【问题讨论】:

    标签: android firebase firebase-storage android-glide


    【解决方案1】:

    尝试禁用磁盘和内存缓存:

        Glide.with(this)
                .using(new FirebaseImageLoader())
                .load(storageRef)
                .diskCacheStrategy(DiskCacheStrategy.NONE) // <= ADDED
                .skipMemoryCache(true) // <= ADDED
                .error(R.drawable.defaultuserimage)
                .into(userImage);
    

    添加:

    测试 storageRef 是否为 null 不能用于确定数据是否存储在该位置。您只能通过尝试加载数据或其元数据来确定某个位置是否存在数据。

    【讨论】:

    • 只是一个问题,这应该是用户开发的,但这样引导它不是一个好习惯吗?
    • 这些设置会导致 Glide 总是从 Firebase 存储中加载。我将针对另一个可能的问题更新我的答案。
    • 我想拥有那个缓存,但我想防止它只是在开发过程中正常工作,你能再给我一个提示吗?我怎么知道我的存储引用是空的?,因为我这样做了 f(storageRef != null){ 但即使我在存储中没有任何东西,它也会继续输入我的:S
    • Bob,首先感谢您的回答,正如您所知,在我们这个时代,我们需要快速数据并且依赖 wifi 很糟糕,这就是为什么我想使用缓存,但是当我使用缓存和上传一张新照片并在每次我进入我的活动时将其替换为我之前保存的照片,对不起,很长的信息,但你知道解决这个问题的好方法吗?
    • 对不起,我没有使用 Glide 来提供更多帮助。该文档描述了cache invalidation options。似乎您需要跟踪何时上传新图像并使缓存失效,或者更改图像的签名以在下次加载时获取新图像。
    猜你喜欢
    • 2017-11-16
    • 1970-01-01
    • 2017-02-25
    • 2017-08-13
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    相关资源
    最近更新 更多