Почему Glide не работает с Firebase Storage - PullRequest
1 голос
/ 02 мая 2020

Я пытаюсь загрузить изображение из хранилища 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 без ошибок. Спасибо

1 Ответ

1 голос
/ 02 мая 2020

Как видно из документации , getDownloadUrl() не возвращает URL в действительности. Он асинхронно возвращает задание, которое даст вам URL, если вы добавите к нему прослушиватель. Вы получите этот URL только после того, как он будет доставлен слушателю, и у вас нет гарантии, когда он завершится.

Я предлагаю прочитать ответ на этот другой вопрос для получения более подробной информации и примеров: Как получить URL из Firebase Storage getDownloadURL

Другой альтернативой является использование FirebaseUI Storage в качестве плагина для Glide, который сделает большую часть тяжелой работы за вас.

...