Синхронный вызов firestore на устройстве Android

#android #firebase #google-cloud-firestore #android-instrumentation

#Android #firebase #google-облако-firestore #android-инструментарий

Вопрос:

Я пытаюсь обновить firestore документ через устройство Android. Код является частью instrumented test того, что я должен выполнить синхронный вызов Firestore для обновления документа.

 DocumentReference ref=db.collection("country").document("city")
                        .collection("Delhi").document("LajpatNagar");
Task<Void> temp=ref.update("isPinCodeAdded",true);
        while(!temp.isSuccessful()){    
        }
  

Выполнение выполняется бесконечно while loop , и задача никогда не выполняется успешно.
Итак, как я могу выполнить синхронизирующий вызов в android instrumented tests to firestore ?

Ответ №1:

Вы можете заблокировать поток и дождаться результата выполнения задачи Firebase с помощью

 Tasks.await(YOUR_TASK)
  

В вашем случае код будет

 Task<Void> temp = Tasks.await(ref.update("isPinCodeAdded",true));
  

Для получения более подробной информации обратитесь к <a rel="noreferrer noopener nofollow" href="https://developers.google.com/android/reference/com/google/android/gms/tasks/Tasks#await(com.google.android.gms.tasks.Task)» rel=»nofollow noreferrer»>документации.

Имейте в виду, что Android не позволит вам блокировать основной поток, поэтому не делайте этого, если вы находитесь в главном потоке.

Комментарии:

1. Я знаю об асинхронном вызове, поэтому я четко упомянул в вопросе, что мне нужны вызовы синхронизации. Я уже управлял потоком, поскольку он выполняется в инструментальном тестовом потоке.