Мне нужно сохранить результат метода getBalue FireBase, который является асинхронным по своему усмотрению. Я не могу использовать что-то вроде «onPostExecute()», и для моей цели я не могу выполнить всю свою операцию «в onDataChange()», потому что мне нужны ссылки в будущем в других действиях.Wait Firebase async извлекает данные в android
Вот мой сниппет для извлечения данных:
List<Village> villages = new LinkedList<>();
Firebase ref = new Firebase("MYFIREBASEURL").child("village");
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
spinnerArray.clear();
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
Village v = postSnapshot.getValue(Village.class);
villages.add(v);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
Если я пытаюсь читать деревни из «OnDataChange» Я, естественно для его асинхронным жизни, нулевое значение. Есть способ гарантировать, что onDataChange был вызван ?.
Заранее спасибо.
Вы, вам нужно перефразировать ваши потребности в «всякий раз, когда данные меняются, я хочу делать ABC». Или вы можете дождаться данных, это возможно, как правило, не рекомендуется. См. Этот вопрос и ответы для деталей/образцов: http://stackoverflow.com/questions/33203379/setting-singleton-property-value-in-firebase-listener –