Was ist der gute Mechanismus zum Speichern von Informationen zwischen SQLite-Datenbanken und freigegebenen Einstellungen?
Warum gemeinsame Einstellungen verwenden? Warum SQLite verwenden? Ich habe versucht, den Unterschied zwischen ihnen zu finden, und dies ist der bessere Mechanismus für die Datenspeicherung, aber ich kann bei Google keine passende Antwort finden. Bitte helfen Sie mir mit Beispiel und Erklärungen.
Antworten:
Es hängt wirklich von den Daten ab, die Sie speichern möchten.
SQLite
Große Mengen derselben strukturierten Daten sollten in einer SQLite-Datenbank gespeichert werden, da Datenbanken für diese Art von Daten ausgelegt sind. Da die Daten von der Datenbank strukturiert und verwaltet werden, kann sie mithilfe einer Abfragesprache wie SQL abgefragt werden, um eine Teilmenge der Daten abzurufen, die bestimmten Kriterien entspricht. Dies ermöglicht die Suche in den Daten. Das Verwalten und Durchsuchen großer Datenmengen beeinflusst natürlich die Leistung, sodass das Lesen von Daten aus einer Datenbank langsamer sein kann als das Lesen von Daten aus SharedPreferences.
Gemeinsame Einstellungen
SharedPreferences ist ein Schlüssel- / Wertspeicher, in dem Sie Daten unter einem bestimmten Schlüssel speichern können. Um die Daten aus dem Geschäft zu lesen, müssen Sie den Schlüssel der Daten kennen. Dies macht das Lesen der Daten sehr einfach. So einfach es ist, eine kleine Datenmenge zu speichern, so schwierig ist es, große strukturierte Daten zu speichern und zu lesen, wie Sie den Schlüssel für jede einzelne Daten definieren müssen. Außerdem können Sie nicht wirklich innerhalb der Daten suchen, es sei denn, Sie haben ein bestimmtes Konzept für Benennung der Schlüssel.
quelle
Diese Frage hat eine akzeptierte Antwort, aber ich denke, es gibt mehr zu diesem Thema zu sagen - in Bezug auf Geschwindigkeit.
SharedPreferences und Sqlite DB einer Anwendung sind nur Dateien, die in den Verzeichnissen der Anwendung im Dateisystem des Geräts gespeichert sind. Wenn die Datenmenge nicht zu groß ist, umfasst die Sqlite-Option eine größere und kompliziertere Datei mit mehr Verarbeitungsaufwand für einen einfachen Zugriff.
Wenn die Art der Daten Ihre Wahl nicht bestimmt (wie in der akzeptierten Antwort erläutert) und die Geschwindigkeit eine Rolle spielt, ist es wahrscheinlich besser, SharedPreferences zu verwenden.
Das Lesen einiger Daten befindet sich häufig auf dem kritischen Weg zur Anzeige der Hauptaktivität. Daher denke ich, dass Geschwindigkeit oft sehr wichtig ist.
Ein letzter Gedanke zu Geschwindigkeit und Effizienz: Wenn Sie für einige strukturierte Daten eine SQLite-Datenbank verwenden müssen, ist es wahrscheinlich effizienter, Benutzereinstellungen auch in der Datenbank zu speichern, damit Sie keine zweite Datei öffnen. Dies ist eine eher geringfügige Überlegung - wahrscheinlich nur dann eine Überlegung wert, wenn Sie sowohl auf die strukturierten Daten als auch auf die Einstellungen zugreifen müssen, bevor Sie die Hauptaktivität anzeigen können.
quelle
Meiner Meinung nach geht es nicht um Geschwindigkeit oder Größe, sondern um die Art der Operation, die Sie mit Ihren Daten ausführen möchten.
Wenn Sie planen zu verbinden , sortieren , und andere DB - Operationen auf die Daten dann gehen SQLite . Ein Beispiel ist das Sortieren von Daten nach Datum.
Wenn Sie einfache Werte (wie int, boolean, String) zuordnen möchten, verwenden Sie die Einstellungen . DB-Operationen funktionieren hier nicht und es ist unnötig zu erwähnen, dass Sie alle Schlüssel haben müssen. Ein Beispiel ist das Benutzerkennwort oder die App-Konfiguration.
Die große Versuchung, Einstellungen zu akzeptieren, besteht darin, ein abgeflachtes POJO (ein serialisiertes JSON-Objekt) als Zeichenfolge zu speichern. Ein solches Bedürfnis zu haben, ist eigentlich das Zeichen, Sqlite zu verwenden. Warum ? Weil komplexe Daten irgendwann komplexe Operationen erfordern. Stellen Sie sich vor, Sie rufen einen bestimmten Eintrag ab, der mit einem einfachen "SELECT ... WHERE id = 1" verarbeitet werden kann. Im Pfad "Einstellungen" ist dies ein langer Prozess von der Deserialisierung bis zur Iteration der Ergebnisse.
quelle
SharedPreferences
Schlüssel / Werte gleichzeitig löschen (z. B. sowohl dieuser
als auch diepassword
Tasten), damit Sie sicher sind, dass entweder beide Tasten deaktiviert oder beide festgelegt sind.Verwenden Sie zum Speichern großer Datenmengen das SQLite-Datenbanksystem. Dadurch kann der Benutzer auch nach Daten suchen.
Wählen Sie zum Speichern kleiner Datenmengen die Option "Gemeinsame Einstellungen". In diesem Fall ist ein riesiges Datenbanksystem nicht erforderlich. Auf diese Weise kann der Benutzer Daten einfach speichern und laden.
quelle
Vergessen Sie SQLLite, vergessen Sie SharedPreferences, verwenden Sie Realm. Eine einzige Lösung für Ihren gesamten lokalen Speicher. Sie können einfache alte Java-Objekte als RealmObjects verwenden und Ihre Daten dort speichern. Sie können ausgewählte Abfragen in JSON-Dateien konvertieren. Sie müssen nicht die gesamte Datenbank analysieren. Überprüfen Sie diesen Link: https://realm.io/news/introducing-realm/
quelle