App Konzept, Daten speichern

  • Hi,


    ich versuche mich grade an Android und habe mir schon ein relativ ambitioniertes Projekt vorgenommen. Dazu habe ich einige Fragen. Im Groben soll die App Namen und Datensätze einlesen, diese an eine "normale" Java Klasse übergeben, wo die Magie passiert und dann soll der Output dargestellt werden. Soweit, so klar. Allerdings würde ich es gerne so implementieren, dass man den aktuellen Stand abspeichern kann und am Anfang des Programms auswählen kann, ob man einen gespeicherten Datensatz weiter verwenden, einen neuen erstellen oder den letzten benutzen möchte.
    Mein erster Ansatz wäre, das ganze einfach in Dateien zu speichern, aber ich bin mir sicher, dass es da elegantere Varianten gibt.
    Könnt ihr mir Anregungen, Tipps etc geben, wie ich das ganze realisieren kann, wo ich Activities, wo Fragments verwende etc? Das würde mir echt weiterhelfen.


    lg nemesis

  • Hi nemesis,


    zur Thematik letzten Datensatz wieder verwenden oder einen neuen anlegen fällt mir spontan das Stichwort SharedPreferences ein. Im Grunde eigentlich eine Hashtable in die man Key-Value-Pares werfen kann. Um den Dateizugriff usw. braucht man sich dann nicht weiter kümmern. Du könntest also auf ein Beenden deiner App reagieren, das aktuelle Objekt in den SharedPreferences ablegen und bei einem Neustart je nachdem was der User wählt und will das aktuelle Objekt wieder auslesen oder verwerfen.


    Gruß,
    matze

  • Danke für die Antwort erstmal.


    Die SharedPreferences würden passen, aber kann ich denn damit auch abstrakte Datentypen speichern oder nur primitive?
    Ansonsten hatte ich mir überlegt, evtl ne Datenbank zu haben, wo die verschiedenen Saves drinliegen, und ID0 immer das zuletzt verwendete ist, oder so...
    Und mir ist noch eine Frage aufgekommen: Ich arbeite in dem Programm mit Namen und dazugehörigen Daten. Bis dato habe ich das mit einem Namensarray und Datenarray gelöst, in dem die Daten stehen, allerdings möchte ich das nun so implementireren, dass ich Namen auch nahträglich löschen und hinzufügen kann... Zunächst dachte ich, es wäre klug das dann über ArrayLists zu machen, aber sinnvoller wäre es vermtl mit Hashlists/maps zu arbeiten, oder?

  • Hi nemesis,


    stimmt, es lassen sich nur primitive Datentypen in die SharedPrefenreces schreiben. Es gibt Möglichkeiten wie das JSONObject um Objekte dann mit .toString() abzulegen oder Arrays indem man den Index an den Key hängt.
    Allerdings wäre es dann schon sauberer das ganze über eine SQLite DB zu machen.


    Wenn ich dich richtig verstehe wäre die HashTable oder HashMap das was du suchst, ja. HashTable wenn es Thread-Sicher sein soll oder eine deiner Values null sein kann. Ansonsten natürlich die HashMap, da die keine synchronized methoden hat und somit effizienter ist.


    Gruß,
    matze

  • Ich frage mich grade, ob es sinnvoll wäre, statt einer Datenbank die Daten in XML Dateien zu speichern, da die Datensätze oft komplett überschrieben werden müssen und ich habe grad im Kopf, dass das in Datenbanken nicht so ineffizient ist, weil man die Einträge einzeln loswerden muss und dann neu schreiben. Mit Dateien würde ich die Datei einfach nur überschreiben, oder täusche ich mich da?


    Wenn XML-Dateien sinnvoll sind ist das hier die richtige Methode, um an einen passenden Ordner dafür zu kommen?:

    Code
    File saveDir = new File(this.getApplicationContext().getFilesDir().getAbsolutePath()+"save/");
  • Die Daten kannst du auch in XML speichern, aber das ist eigentlich nur sinnvoll, wenn man die Daten mit anderen Programmen austauschen möchte. Außerdem wird das erst mit dem javax.xml.transform.Transformer einfach, der ist aber erst ab API 8 verfügbar, deine App läuft dann nicht auf älteren Smartphones. :(


    Du schreibst "aktuellen Stand abspeichern" und "einen gespeicherten Datensatz weiter verwenden, einen neuen erstellen oder den letzten benutzen".


    Dein Stichwort Datensatz deutet stark auf SQLiteDB hin - da kannst du dann viele Datensätze speichern, es gibt auch viele Beispiele in den Developer-Dokus auch zum Auswählen aus einer Liste. Besonders wenn immer die gleichen Felder im Datensatz sind, solltest du eine Datenbank nehmen.


    Und in den SharedPreferences kannst du den aktuellen Stand speichern - die letzte benutzte id sollte genügen, wenn du die Daten in der Datenbank hast.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!