Warten Sie, ob Firebase asynchrone Daten in Android abruft

Lesezeit: 1 Minute

Warten Sie ob Firebase asynchrone Daten in Android abruft
Marco Rossini

Ich muss das Ergebnis der FireBase getValue-Methode speichern, die von ihm selbst asynchron ist. Ich kann so etwas wie “onPostExecute()” nicht verwenden und für meinen Zweck kann ich nicht alle meine Operationen “into onDataChange()” ausführen, da ich in Zukunft einige Referenzen in anderen Aktivitäten benötige.

Hier mein Snippet zum Abrufen von Daten:

    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());
        }
    });

Wenn ich versuche, Dörfer aus “onDataChange” auszulesen, habe ich natürlich für sein asynchrones Leben einen Nullwert. Es gibt eine Möglichkeit sicherzustellen, dass onDataChange aufgerufen wurde?.

  • Sie müssen Ihre Anforderungen umformulieren in “Immer wenn sich die Daten ändern, möchte ich ABC machen”. Oder Sie können auf die Daten warten, es ist möglich, nur nicht allgemein empfohlen. Siehe diese Fragen und Antworten für Details/Beispiele: stackoverflow.com/questions/33203379/…

    – Frank van Puffelen

    15. November 2015 um 19:59 Uhr

  • Dies behebt das Problem nicht. Der asynchrone Aufruf wird wie gewohnt durchgeführt und ruft die Daten nur ab, wenn sie benötigt werden.

    – Flaom

    5. Februar 2018 um 3:11 Uhr

917280cookie-checkWarten Sie, ob Firebase asynchrone Daten in Android abruft

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy