2017-08-06 2 views
-2

Ich baue gerade eine Anwendung, die zeitsensible Geofences verwendet (derzeit auf 12 Stunden begrenzt, aber kann sich ändern - sicherlich kurzfristig), um den Benutzern Informationen über ihre Umgebung zu geben. Als Teil davon bevölke ich eine Karte mit Markierungen, die angeben, wo sich diese Geofences befinden, sowie einen Aktivitätsbildschirm mit Benachrichtigungsinformationen als Antwort auf den Benutzer, der an diesen Geofences ankommt (dies wird eine zeitgestempelte Liste sein). Derzeit werden diese Markierungen als Teil von onDestroy entfernt, obwohl die Geofences bestehen bleiben.Android: SQLite vs Gemeinsame Einstellungen für kurzfristige, zeitkritische Daten?

Zum erneuten Auffüllen der Karte und der Benachrichtigungsaktivität in onStart/onResume möchte ich Informationen darüber speichern, welche Geofences derzeit aktiv sind und welche Benachrichtigungen in einem persistenten Datenformat aktiviert wurden.

Ich habe nach Informationen darüber gesucht, welches das beste Speicherformat für persistente Daten ist, und sehe, dass es für komplexe Daten normalerweise besser ist, die Datenbank zu verwenden. Ich habe mich jedoch gefragt, ob das Zeitlimit Auswirkungen auf die Antwort hätte ? Die Informationen befinden sich derzeit alle in einer Datenbank, daher ist die Infrastruktur bereits vorhanden. Ich möchte jedoch überprüfen, ob die Benachrichtigung vor x Stunden ausgelöst wurde, und wenn dies nicht angezeigt wird, wird sie/db von db angezeigt. Ich verstehe, dass die zeitliche Mathematik sich stark auf die SQL-Performance auswirken kann, daher zögere ich, diese Route zu gehen, wenn sie vermieden werden kann. Die andere Option war, die Daten in gemeinsamen Voreinstellungen zu speichern (vielleicht habe ich einen Zeitstempel als Schlüssel verwendet, ich habe an anderer Stelle gelesen, dass dies machbar sein sollte, wenn ich getAll() benutze und die sharedPrefs durchlaufen) Wert ist eine JSON-Datei, die auf die anzuzeigenden Daten zeigt.

Sorry, ein bisschen langwierig mit diesem zu sein, wollte nur sicherstellen, dass ich genug Details gegeben habe - danke für jeden Rat und Entschuldigung, wenn das zu anderen Themen in der Sache zu ähnlich ist.

+0

Implementieren Sie beide, überprüfen Sie, was besser Ihren Bedürfnissen entspricht. Jedenfalls sind solche Fragen off-topic. – Selvin

+0

Ich würde für SharedPreferences gehen. Eine Datenbank wäre für Ihre Zwecke ein Overkill. Kurzfristige Daten werden sicher am besten in SharedPreferences verwendet, anstatt ein RDBMS einzubeziehen. –

+0

Was ist mit [SnappyDB] (https://github.com/nhachicha/SnappyDB)? lese das [Kochbuch] (https://github.com/nhachicha/SnappyDB#create-database) zuerst – pskink

Antwort

0

Wenn die Datenmenge so klein ist, dass sie mit SharedPreferences verwendbar wäre, müssen Sie sich nicht um die SQL-Leistung kümmern.

Sie können also einfach diejenige auswählen, die einfacher zu verwenden ist. Dies wird wahrscheinlich SQLite (weil Sie alte Einträge mit einer einzigen SQL-Anweisung entfernen können), aber wenn Sie irgendwelche Zweifel haben, implementieren Sie beide und vergleichen Sie sich.

Verwandte Themen