2

Meine Android-App verwendet derzeit Volley für die HTTP-Kommunikation mit meinem Webdienst, der mit dem Django-Rest-Framework erstellt wurde. Mein Backend besteht aus einer MySQL-Datenbank und Python.Aktualisierung der Android-Benutzeroberfläche bei Datenbankänderungen

Die App besteht aus mehreren Benutzern, die dieselbe Seite aktualisieren. Ich möchte, dass diese Seite in Echtzeit aktualisiert wird. Wenn es eine Aktualisierung der Datenbank (über den Webservice) gibt, möchte ich diese Updates an alle verbundenen Clients weitergeben. Ich würde es vorziehen, die Daten an die Clients zu übertragen, anstatt den Server abzufragen.

Was ist der empfohlene Ansatz zum Synchronisieren einer Datenbank mit einer Android-Benutzeroberfläche?

Hier sind einige der Optionen, die ich über gekommen sind: (? Wenn ich diesen Weg gehen werde ich brauche, um meine Datenbank zu migrieren)

Android Sync Adapter

Firebase Cloud Messaging

PubNub

Gibt es eine Möglichkeit, dies mit Volley zu erreichen?

+0

Es gibt andere Optionen, zum Beispiel MQTT (siehe Eclipse Paho für eine Android-Client-Bibliothek) – mjn42

+0

Also von meinem Verständnis von Volley, es ist eine req/resp-Bibliothek für Android und hat nichts mit dem Ziehen von Daten zu tun. Ich glaube nicht, dass du erreichen kannst, was du mit Volley machen willst. Es sei denn, Sie wollen eine Umfrage durchführen, aber basierend auf Ihrer Frage oben, bezweifle ich, dass Sie das tun möchten. –

+0

mögliche Duplikate von http://StackOverflow.com/Questions/1378671/Push-Notifications-in-Anroid-Platform und http://StackOverflow.com/Questions/1243066/does-android-Support-near-real-time- Push-notification/ – k3b

Antwort

1

Ich würde Sie PubNub der Echtzeit-Datenmanagement verwenden vorschlagen und dann entweder Rundfunkempfänger verwenden, EventBus oder Otto Ereignisse auszulösen, die Sie vor Ort hören. Lass es mich etwas mehr erklären.

Wenn eine CRUD-Operation erfolgreich durchgeführt werden kann, können Sie diese in der Datenbank PubNub veröffentlichen. Dies wird wiederum für Ihre Kunden ausgelöst, die Abonnenten sind. Dann können Sie in Ihrer Anwendung einen Android-Dienst haben, der ausgeführt wird, und er wird dann die Pub Nub-Ereignisse, die empfangen werden, abhören und verarbeiten. An diesem Punkt können Sie dann lokale Ereignisse in Ihrer Anwendung mit EventBus oder Otto auslösen und Ihre Ansichten auf diese Ereignisse reagieren lassen. Nun, der Grund, warum ich vorschlage, die Ereignisverwaltung zu trennen, ist so, dass wenn Sie Echtzeitdatenanbieter ändern, es sehr wenig Codeänderung in Ihrer Anwendung erfordert, da es im Android-Dienst und nicht in Ihrer gesamten Anwendung gekapselt ist.

+0

Die Frage besteht darin, die Datenbank auf einem Remote-Webdienst zu aktualisieren und andere Android-Clients über die Änderungen zu informieren. Bist du sicher, dass PubNub auf einem Webserver laufen und eine Übertragung an die Android-Geräte senden kann? – k3b

+0

Soweit ich weiß, ja. Ich bin gerade in die PubNub-Wissensdatenbank gegangen und habe Folgendes gesehen: https://www.pubnub.com/knowledge-base/discussion/296/can-i-publish-a-message-via-a-database-trigger völlig falsch verstanden die Frage, ich denke, es ist ziemlich einfach auf dieses Beispiel basiert. –

+0

@Der Code Pimp - ja, beachte nur die * NOTE * oben in diesem KB-Artikel. Und Sie können die db-Updates mit einer FCM-Push-Payload (ehemals GCM) veröffentlichen, sodass das Gerät das Update erhält, wenn sich die App im Hintergrund befindet oder nicht ausgeführt wird. –