Как заставить мою программу ждать завершения задачи, прежде чем продолжить? - PullRequest
0 голосов
/ 02 ноября 2019

Мне нужен Url / Uri изображения на базе Firebase, чтобы затем использовать его на следующей строке. Это выглядит примерно так:

Uri uri = storageReference.getDownloadUrl().getResult();
this.doAThing(uri);

Проблема в том, что я получаю сообщение об ошибке «Задача еще не выполнена». Как заставить его просто ждать, пока задача не закончится / Есть ли лучший способ получить Uri?

Ответы [ 2 ]

1 голос
/ 02 ноября 2019

Мне потребовалась похожая концепция в моем проекте. Мне пришлось использовать встроенный прослушиватель Firebase, чтобы получить URL.

Я использовал getDownloadUrl (). AddOnSuccessListener () , это вернул URI

Вот часть моего фрагмента кода:

filepath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
    @Override
    public void onSuccess(Uri uri) {
        Log.d("=== link ",uri.toString());

        // Your code
    }
});

filepath - это объект StorageReference, на который ссылается этот файл.

Надеюсь, это поможет.

0 голосов
/ 02 ноября 2019

Создайте интерфейс, который будет уведомлять приложение о завершении задачи, после чего вы запускаете новую задачу

interface JobCompletion{

void onCompletion()

}

Написать вторую задачу в методе onCompletion в классе, реализующем JobCompletion

ИЛИ

Вам потребуется вызвать метод AsyncTask.get () для получения результата и дождаться завершения выполнения doInBackground. но это приведет к зависанию основного потока пользовательского интерфейса, если вы не вызовите метод get внутри потока.

Чтобы получить результат обратно в потоке пользовательского интерфейса, запустите AsyncTask как:

String str_result = new RunInBackGround (). execute () .get ();

или используйте AsyncTask без метода get и в AsyncTask вызывается метод onPostExecute, который предоставляет результаты для основного потока пользовательского интерфейса

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