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?
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.
Tags und Links android firebase firebase-database