为什么Glide不能与Firebase存储一起工作?

问题描述 投票:0回答:1

我试图从Firebase存储中加载图像,但在使用Glide时出现异常。

我的代码

storageReference=FirebaseStorage.getInstance().getReference().child("profiles/"+firebaseUser.getUid()+"/"+"profilePic");
            Glide.with(FinishIntroActivity.this)
                    .load(storageReference.getDownloadUrl())
                    .into(profileFinishImg);

我的Gradle

implementation 'com.github.bumptech.glide:glide:4.8.0'

我得到的异常

W/Glide: Load failed for com.google.android.gms.tasks.zzu@669eaa8 with size [525x525]
    class com.bumptech.glide.load.engine.GlideException: Failed to load resource
    There was 1 cause:
    com.bumptech.glide.Registry$NoModelLoaderAvailableException(Failed to find any ModelLoaders for model: com.google.android.gms.tasks.zzu@669eaa8)
     call GlideException#logRootCauses(String) for more detail
      Cause (1 of 1): class com.bumptech.glide.Registry$NoModelLoaderAvailableException: Failed to find any ModelLoaders for model: com.google.android.gms.tasks.zzu@669eaa8
2020-05-02 11:32:07.951 8343-8343/com.happyorbit.happyorbit I/Glide: Root cause (1 of 1)
    com.bumptech.glide.Registry$NoModelLoaderAvailableException: Failed to find any ModelLoaders for model: com.google.android.gms.tasks.zzu@669eaa8
        at com.bumptech.glide.Registry.getModelLoaders(Registry.java:584)
        at com.bumptech.glide.load.engine.DecodeHelper.getLoadData(DecodeHelper.java:205)
        at com.bumptech.glide.load.engine.DecodeHelper.getCacheKeys(DecodeHelper.java:223)
        at com.bumptech.glide.load.engine.ResourceCacheGenerator.startNext(ResourceCacheGenerator.java:44)
        at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)
        at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:269)
        at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:233)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)
        at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:446)

请帮助我使用Glide而不出错。谢谢你的帮助

android firebase imageview firebase-storage android-glide
1个回答
1
投票

正如你可以看到的 文件, getDownloadUrl() 并不真正返回一个URL。 它异步返回一个任务,如果你给它添加一个监听器,它就会给你URL。 你只有在URL交付给监听器后才会得到它,而且你不能保证何时完成。

我建议阅读这另一个问题的答案,以了解更多细节和例子。如何从Firebase存储中获取URL getDownloadURL?

另一种选择是使用 FirebaseUI存储 作为Glide的插件,它将为你做大部分的艰苦工作。

© www.soinside.com 2019 - 2024. All rights reserved.