Сейчас у меня есть рабочий код для получения DocumentReference из базы данных Firestore по id. Я пытаюсь затем выполнить команду .get () для обработки определенного поля из документа, и ничего не происходит. Вот мой код:
FirebaseFirestore mFirestore = FirebaseFirestore.getInstance();
DocumentReference docRef = mFirestore.collection(collection).document(doc_key);
Log.d("LOGGER", "docRefID is:" + docRef.getId());
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
Log.d("LOGGER", "task complete"); // this is never being called
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document != null) {
Log.d("LOGGER", "Got in here");
foo(document.getString(myField)); // this is where I'm trying to do things, but its not getting here
} else {
Log.d("LOGGER", "No such document");
}
} else {
Log.d("LOGGER", "get failed with ", task.getException());
}
}
});
while( // foo has not been called yet ) {
Log.d("LOGGER", "still waiting");
Thread.sleep(2000);
}
Вот мой вывод logcat:
2020-04-13 13:55:47.449 24669-24669/com.example.myurbanflix D/LOGGER: docRefID is:nNuztOjrN0kz53XTmCS1
2020-04-13 13:55:47.450 24669-24669/com.example.myurbanflix D/LOGGER: still waiting
2020-04-13 13:55:49.452 24669-24669/com.example.myurbanflix D/LOGGER: still waiting
2020-04-13 13:55:51.452 24669-24669/com.example.myurbanflix D/LOGGER: still waiting
Когда я запускаю программу, я правильно вижу идентификатор моего DocumentReference, и это значение идентификатора документ, который я пытаюсь запросить, но ни одно из других сообщений журнала не появляется. Похоже, что задача никогда не завершается, потому что ни одно из этих внутренних сообщений журнала не появляется, и мое время l oop внизу просто продолжает пинговать logcat каждые две секунды. Я также должен отметить для контекста, что я пытаюсь сделать это внутри FirestoreAdapter для использования в RecyclerView. Есть идеи, что я делаю не так?