#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. Я знаю об асинхронном вызове, поэтому я четко упомянул в вопросе, что мне нужны вызовы синхронизации. Я уже управлял потоком, поскольку он выполняется в инструментальном тестовом потоке.