2017-01-05 6 views
1

In meiner Android-App muss ich eine bestehende SQLite-Datenbank behalten, aber um Elemente (Aufgaben aus einer Todo-Liste) mit mehreren Geräten zu synchronisieren, entschied ich mich für Firebase Database.Firebase-Datenbank offline schreiben

Also ich bin nicht aktivieren Firebase-Datenbank-Offline-Modus, da ich SQLite dafür verwenden muss (es ist für ein College-Projekt).

Also, was ich für Schreibvorgänge mache, ist, dass, wann immer einige Daten hinzugefügt oder aus der lokalen SQLite-Datenbank entfernt werden, auch die Firebase geändert wird.

All dies funktioniert wie erwartet, wenn der Benutzer mit dem Internet verbunden ist oder wenn der Benutzer eine Aufgabe offline hinzufügt und dann online wird, während er in der App ist.

Wenn der Benutzer jedoch offline eine Aufgabe hinzufügt, die App schließt und dann in einer anderen App online wird, wird die Änderung nicht in die Datenbank übertragen, selbst wenn der Benutzer meine App erneut öffnet.

Irgendwelche Ideen?

Vielen Dank.

+0

Soweit ich weiß, wenn es keine Verbindung zwischen Gerät, das das Schreiben Internet (Firebase) zu tun, gibt es keine Möglichkeit, die Firebase Daten nach oben wird es aktualisiert werden. ABER wenn das Telefon online geht, nachdem die App geschlossen wurde, können Sie einen Hintergrunddienst zur Aktualisierung der Daten einrichten, und Sie sind fertig. – koceeng

Antwort

2

Da Sie den Offline-Modus der Firebase-Datenbank nicht aktiviert haben, werden alle Daten, die Ihre App zu übertragen versucht, nicht im permanenten Speicher gespeichert, sondern nur im Speicher. Deshalb werden diese Daten nach dem Neustart der Anwendung nicht an Firebase übertragen.

Sie benötigen also einen Synchronisationsalgorithmus beim Start der Anwendung, der Daten von Ihrer lokalen Datenbank in Firebase (und umgekehrt) verschiebt.

Sie können z. B. den Zeitmarkenmarker (System.currentTimeMillis()) sowohl auf der lokalen als auch auf der Firebase-Seite verwenden, der bei jeder Datenbankänderung immer aktualisiert werden sollte.

dann beim Start der Anwendung können Sie einfach diesen Marker überprüfen:

  • wenn lokale Markierung größer ist als die Fern ist - das bedeutet, dass Remote-Datenbank veraltet ist. Kopieren Sie einfach alle Ihre lokalen SQL-Datenbankdaten zu Firebase.

  • Wenn die Remote-Markierung größer als die lokale ist - einfach die lokale db löschen und alle Daten von Firebase herunterladen.

  • Wenn beide Marker gleich sind - das bedeutet, dass alles auf dem neuesten Stand ist, nichts tun.

this helps :)