Meine Anwendung benötigt eine Datenstruktur, die einer Queue ähnlich ist: Daten hineinlegen, Daten davon empfangen, FIFO-ähnlich. Mit Daten meine ich zunächst einfache Strings, später vielleicht komplexere Objekte. Die Sache ist, dass die Warteschlange und ihr Inhalt beständig sein sollten, unabhängig davon, was Android macht. Wenn die Anwendung geschlossen und erneut geöffnet wird (oder sogar Neustarts von Android), sollte die Warteschlange den gleichen Status und die gleichen Daten haben, die sie vor dem Schließen der Anwendung hatte.
Ich denke, die Warteschlange muss eine Art von Speicher unter der Haube verwenden, vorzugsweise den internen Speicher des Geräts. Vielleicht könntest du ein Brainstorming machen, wie du das realisieren kannst. Die Warteschlange muss nicht unbedingt in meiner Anwendung laufen, es könnte auch eine Art von lose gekoppeltem Hintergrund-Dienst sein, wenn das in Android möglich ist (aber privat für meine Anwendung).
Ich empfehle, eine Tabelle in Sqlite
zu verwenden. Ich würde mein eigenes SqliteQueue
erstellen, das die Warteschlangenschnittstelle implementiert. Offer
würde einen Eintrag zur Tabelle hinzufügen. Poll
würde einen Eintrag zurückgeben und ihn aus der Tabelle entfernen. Für komplexere Objekte können Sie GSON verwenden, um das Objekt in eine JSON-Zeichenfolge zu konvertieren oder die JSON-Zeichenfolge in eine zu konvertieren Objekt.
Möge quadratisch eine gute Wahl sein.
QueueFile ist ein blitzschneller transaktionaler dateibasierter FIFO. Hinzufügen und Entfernen von einer Instanz ist eine O (1) -Operation und ist atomar. Schriftsätze sind synchron; Daten werden auf den Datenträger geschrieben, bevor eine Operation zurückgegeben wird. Die zugrunde liegende Datei ist so strukturiert, dass sie Prozess- und sogar Systemabstürzen standhält. Wenn während einer mutierenden Änderung eine E / A-Ausnahme ausgelöst wird, wird die Änderung abgebrochen.
Das ist eine gute Bibliothek von Path:
"Eine speziell für Android geschriebene Jobwarteschlange zur einfachen Planung von Jobs (Aufgaben), die im Hintergrund ausgeführt werden, um die UX- und Anwendungsstabilität zu verbessern."
Und bieten viele Funktionen wie Priorität, Netzwerkprüfung, Rückrufe usw.
Ich bin ziemlich hübsch, es gibt keine solchen Datenstrukturen in der Java-API, aber es sollte kein Problem bei der Implementierung Ihrer eigenen Art von Queue
geben. Werfen Sie einen Blick auf dieses Dokument, das die Beschreibung der Datenspeichermechanismen in Android enthält. Ich würde vorschlagen, SharedPreferences
zu verwenden, aber Sie können wählen, was am besten zu Ihrer Anwendung passt. Sie können eine der Java-Sammlungen erweitern, die die Schnittstelle Queue
implementiert, und Ihre Persistenzmechanismen mithilfe der Speicheransätze von Android hinzufügen. Hoffe, das hilft.