Объявляется ли StorageReference.getDownloadUrl () внутри uploadTask.addOnSuccessListener? - PullRequest
0 голосов
/ 05 июля 2018

Как указано в документации Firebase, я должен вызвать getDownloadUrl () в StorageReference после загрузки файла. Таким образом, задача должна быть объявлена ​​внутри addOnSuccessListener?

final StorageReference ref = storageRef.child("your_REF");
uploadTask = ref.putFile(file);

    Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
        @Override
        public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
            if (!task.isSuccessful()) {
                throw task.getException();
            }

            // Continue with the task to get the download URL
            return ref.getDownloadUrl();
        }
    }).addOnCompleteListener(new OnCompleteListener<Uri>() {
        @Override
        public void onComplete(@NonNull Task<Uri> task) {
            if (task.isSuccessful()) {
                Uri downloadUri = task.getResult();
            } else {
                // Handle failures
                // ...
            }
        }
    });

1 Ответ

0 голосов
/ 05 июля 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...