Ist es möglich, eine synchrone Anfrage in der FB?
Ich bin mit Firebase Android SDK
interessiert, und wurde in senden der synchronen Anfrage statt asynchron. Laut der Dokumentation, in der jede Anfrage Rückrufe werden vorgestellt. Aber was ist mit der Synchronität?
Dank!
- Warum würden Sie wollen, dies zu tun? Die asynchrone Natur von FB-Aufrufe ermöglicht, Ihre app-Konto für das timing in der Reaktion (unter anderem). Wir können wahrscheinlich helfen mehr, wenn Sie uns ein Fall-Beispiel.
- Ich wollte diese Informationen nur aus Gründen von Interesse 😉
- stackoverflow.com/questions/31700830/...
- Lesen Sie auch diesen Artikel für weitere Informationen: medium.com/google-developers/...
- Insbesondere use-case, für diese Anforderung empfangen und verarbeiten von FB-Daten im hintergrund, wo eine permanente Verbindung macht weniger Sinn.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Möglichkeit, synchron laden der Daten aus der FB-Datenbank.
Während es ist üblich für Entwickler neues auf FB zu wünschen, um für eine synchrone Methode, es passt einfach nicht mit FB die Daten-Synchronisierung-Modell. Siehe auch meine Antwort hier: Einstellung Singleton-Eigenschaft-Wert in FB-Listener
Ist es nicht möglich, das laden der Daten asynchron mit dem offiziellen SDK. Sie können jedoch Zugriff auf alle Daten in der Feuerstellung mithilfe der REST-API. Dies würde Ihnen ermöglichen, synchrone Aufrufe. Wie erwähnt über, FB ist eine Echtzeit-Datenbank, und Sie fehlt die Funktion aktualisiert, wenn die Daten verändert werden.
Während es nicht möglich ist das laden der Daten aus der FirebaseDatabase in einer synchronen Weise ist es möglich, zu warten, bis das laden zu beenden synchron.
Können Sie wickeln Sie Ihre Wert-listener in einer
CountDownLatch
- und count-down,sobald die
onDataChange
oderonCancelled
Implementierung aufgerufen wird.Dies ist eigentlich das, was die
Tasks
api ist dabei intern, wenn Sie anrufenTasks.await(someTask)
.Sollten Sie den Wert verwenden, der einzigen Ereignis-listener für das Zuhören, denn in diesem Fall, ich nehme an, Sie wollen nicht weiter aktualisiert. Und verwenden Sie eine angemessene timeout-Wert für das
CountDownLatch
, seit FB wird nicht timeout, immer.Haben Sie auch zu berücksichtigen, dass, wenn Sie die FirebaseDatabase
cache aktiviert, das erste Ergebnis möglicherweise nicht den tatsächlichen Wert auf der
server.
Muss ich hinzufügen: Während dies funktionieren könnte, es ist gegen die Idee, wie FB konzipiert ist und eingesetzt werden soll, wie es Frank bereits gesagt hat.
Machte ich eine einfache Klasse zu nennen Aufgaben synchron in Android.
Beachten Sie, dass dies ähnlich
Javascript
's async-await-Funktion.Überprüfen Sie meine gist.
TasksManager.class
Hier ist ein Beispiel code um es zu benutzen.