Ist es möglich, synchron Daten von Firebase zu laden?

7

Ich versuche, Teile eines WebView in meiner Android-App mit Daten zu aktualisieren, die ich von einem über Firebase verbundenen Peer erhalte. Dazu kann es hilfreich sein, Blockierungsoperationen auszuführen, die die benötigten Daten zurückgeben. Zum Beispiel eine Implementierung des Chat-Beispiels, die wartet, bis ein anderer Chat-Teilnehmer etwas schreibt, bevor push.setValue () zurückgegeben wird. Ist ein solches Verhalten mit Firebase möglich?

    
Dani 29.07.2015, 12:47
quelle

3 Antworten

8

Bei einer regulären JVM würden Sie dies mit regulären Java-Synchronisationsgrundelementen tun.

Zum Beispiel:

%Vor%

Aber das funktioniert nicht auf Android. Und das ist eine gute Sache, denn es ist eine schlechte Idee, diese Art der Blockierung in allem zu verwenden, was die Benutzeroberfläche betrifft. Der einzige Grund, warum ich diesen Code herumliegen hatte, ist, dass ich einen Unit-Test benötigte.

Bei echtem benutzerorientierten Code sollten Sie einen ereignisgesteuerten Ansatz wählen. Anstatt also "auf die Daten zu warten und dann meine Nachricht zu senden", würde ich "wenn die Daten ankommen, meine Nachricht senden":

%Vor%

Das Nettoergebnis ist genau das gleiche, aber dieser Code erfordert keine Synchronisation und blockiert nicht auf Android.

    
Frank van Puffelen 29.07.2015, 14:09
quelle
23

Paket com.google.android.gms.tasks;

Tasks.await (taskFromFirebase);

    
Alex 29.07.2016 16:27
quelle
4

Ich habe eine andere Möglichkeit gefunden, Daten synchron zu holen. Voraussetzung ist, nicht auf dem UI-Thread zu sein.

%Vor%

Ich habe meine Lösung getestet und es funktioniert gut, aber bitte beweisen Sie mich falsch!

    
juls 25.07.2017 15:56
quelle