Objekte über Intents versenden oder aus Dateien laden?

  • Folgende Situation:
    Ihr habt mehrere Listen die Objekte beinhalten. Diese Listen werden von gewissen Activities um Objekte erweitert oder verändert.
    Startpunkt ist die MainActivity wo zuerst einmal die Listen sowie die Objekte, die der Liste hinzugefügt werden können, instantziert werden.
    Nun gibt es mehrere Activities die man von dort aus ansteuern kann. Es gibt solche die die besagten Listen bloss anzeigen. In anderen Activities kann man Objekte wählen die der Liste mit entsprechenden Attributen hinzugefügt werden können.


    Ziel:
    Das User Interface sollte möglichst flexibel sein, so dass man rasch zwischen den Activities hin und her wechseln kann und nicht immer zur Main Activity zurück gehen muss.


    Ich habe festgestellt, dass es ein ziemlicher Aufwand ist die ganzen Objekte und Listen immer von Activity zu Activity schicken und darauf zu achten dass diese auch stets aktuell sind. Vor allem wenn man die Zurück Taste betätigt können böse Überraschungen geschehen, da man dann dummerweise nicht die aktuellsten Daten weiter gibt. Ich möchte euch nicht zu sehr mit Details belästigen meine Frage ist eher grundsätzlicher Natur:


    Macht es Sinn die ganze Zeit Daten über Intents hin und her zu verschieben, wenn man eine flexible Struktur der App haben möchte oder macht es mehr Sinn die Objekte vor Activity Wechseln zwischen zu speichern und in der neuen Activity wieder zu laden?
    Was sind Vor- und Nachteile von beiden Vorgehen?
    Auf was sollte man achten?
    Was ist der Standard bei der Entwicklung?


    So wie ich das verstanden habe werden ja auch nicht wirklich die Objekte verschoben sondern bloss die Referenzen auf diese. Wenn man also viele Daten über Intents sendet sollte es Performance technisch zumindest stabiler und schneller sein als wenn ich oft Speicher- und Ladevorgänge habe?

  • Das hab ich mir auch überlegt und kurz etwas zu MySQL gelesen. Kommt das denn schlussendlich nicht auf das selbe hinaus wie wenn ich Objekte in .txt Files speichere.


    Ich muss dann ja auch immer die einzelnen Attribute aus der Datenbank ziehen und mir dann wieder neue Objekte zusammenbasteln die ich in die Listen ablegen kann. Oder versteh ich das falsch? Eine Art Datenbank Manager hab ich auch schon in den jeweiligen Java-Klassen codiert. Also alle Methoden zu bestimmten Manipulationen der Listen benötigt würden sind bereits vorhanden.


    Gibt es denn spezielle Vorteile die mir eine Datenbank sonst noch bieten könnte abgesehen vom Manager bzw. Gründe warum man sie vorziehen sollte? Wie bereits angesprochen müsste ich ja aus den Daten trotzdem wieder Objekte generieren um sie Beispielsweise mittels eines Listview-Adapters in einem Listview darzustellen.


    Gibt es Datenbanken, welche nicht nur die Attribute als Zahlenwerte oder Strings abspeichern, sondern ganze Java Objekte speichern können? Ich hab da irgendwie nichts schlaues gefunden bis jetzt.

  • oha, ich weiß gerade nicht was ich sagen soll xD
    Natürlich ist es nicht das selbe, wie wenn du es in ein textfile speicherst. Für eine Datenbank gibt es eben SQL befehle mit deren hilfe du dir einfach dein objekt wieder zusammensetzen kannst. Über ein Textfile ist das weitaus schwieriger und vorallem nicht so strukturiert. Relationen über Txt abzubilden ist auch relativ unsicher.


    Über die Datenbank hast du eben nicht die Probleme der verschiedenen zugriffe von activities auf deine listen. Gerade für die listview musst du garnix zusammenbauen, es gibt für die listview einen cursor adapter von dem aus du einfach auf die daten zugreifen kannst. Um die listview dann zu füllen brauchst du also nichtmal ein objekt.


    Es gibt Datenbanken wie hibernate was von sich aus deine Objekte in eine Datenbank speichert. Aber am Ende wird alles trotzdem auf primitive Datentypen runtergebrochen. Irgendwie müssen diese Daten ja im Speicher abgelegt werden.

  • Hab die ganze Speicherung der Daten jetzt umgebaut und mit SQLite Datenbanken erstellt. Musste mich zwar erstmal ein paar Stunden schlau machen darüber und einiges umprogrammieren aber ist sicherlich die sauberste Lösung wie es mir scheint. Die besagten Probleme treten nun nicht mehr auf. Vielen Dank für den Tipp!

Jetzt mitmachen!

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