Objekte über Activits austauschen.

  • Antworten:5
  • Bentwortet
Philip M.
  • Forum-Beiträge: 90

05.12.2011, 09:26:03 via Website

Guten Morgen an alle,

ich habe eigentlich nur eine kleine Verständnisfrage welche Methode wofür am besten geeignet ist. Ganz klar, wenn ich Daten an eine Activity mitgeben will, dann mach ich das über einen Intent. Somit hab ich die Klassen auch allesamt mit "implements Parceable" erweitert. Was ist allerding nun mit Daten die fast überall gebraucht werden und dann mal wieder nicht?

Nehmen wir an ich habe in meiner App mehrere Profile erstellt und wähle nun eines davon aus, unter dem ich weitere Aktivitäten durchführen möchte. Also wähle ich es aus und werde zu einer weiteren Activity geführt welche das Profil-Object erhält und es verarbeitet. Von dort aus kann ich aber zu vielen anderen Activitis kommen, welche das Objekt brauchen, oder zu welchen die es nicht brauchen. Ich kann auch quasi von jeder Activity zu jeder kommen. Wenn ich dann nun in einer Activity bin, in der ich das Object nicht brauche und von dort aus wieder zu einer Activity wechsel in der ich es brauche, kann ich logischer Weise kein Profil-Objekt übergeben.

Nun meine Frage: Wie löse ich dieses Problem der Datenübergabe? Ich habe es bisher so gelößt das ich es statisch in der Application-Klasse speicher, allerdings hab ich des öfteren gelesen das dies nicht die beste Methode ist. Nun hab ich mir ein bisschen den Punkt "SharedPreferences" angeschaut, allerdings man hiermit scheinbar nur primitive Datentypen temporär speichern, oder hab ich hier was übersehen?

Hat hier vielleicht jemand eine Lösung für mich und könnte mir kurz erklären, wann ich wie welche Daten weiter gebe?
Vielen Dank für eure Unterstützung. :-)

— geändert am 05.12.2011, 09:50:46

Antworten
Philip M.
  • Forum-Beiträge: 90

05.12.2011, 12:16:47 via Website

Das ist ja wie gesagt die Art, wie ich es zur Zeit mache. :-) Nur habe ich wie auch gesagt oft gehört und in andere Foren gelesen, das dies keine gute Methode ist und man dies lieber über SharedPreferences machen sollte.
Mein Problem ist, das ich hier meines wissens nach nur primitive Datentypen teilen kann, oder seh ich das falsch? Oder ist das auch ein falscher Ansatz und ich sollte doch bei meinem Singleton bleiben weil die anderen nur schwachsinn gelabert haben? Bin mir da einfach noch zu unsicher.

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

05.12.2011, 12:54:53 via Website

Für mich sind SharedPreferences halt wirklich zum Speichern von Einstellungen.
Dafür sind die ja auch optimiert (PreferenceActivity usw.)

Für komplexe Objekte macht das keinen Sinn, weil man die umständlich zerlegen und/oder serialisieren müsste.
Bei Übergaben zwischen Activities nehm ich da immer startActivityForResult() oder Datenbanken, die übergreifend genutzt werden ... damit bin ich bisher immer ausgekommen.
Wenn das nicht mehr reicht würd ich mir wohl eine eigene Application Implementierung schreiben und dann in jeder Activity über getApplicationContext() drauf zugreifen.

— geändert am 05.12.2011, 12:56:05

Philip M.

Antworten
Philip M.
  • Forum-Beiträge: 90

05.12.2011, 12:57:27 via Website

Okay, dann werde ich diese Methode nun auch so durchführen. Hatte mal irgendwo gelesen das es dann zu Speicher-Problemen kommen würde bzw. viele Resourcen frisst (keine Ahnung ob an dieser Behauptung was dran ist). Aber wenn das so der normale Gebrauch ist, dann ist ja alles in Ordnung.
Auf jedenfall vielen Dank für deine nützlichen Infos :-)

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

05.12.2011, 13:03:35 via Website

Naja du musst dir halt im Klaren darüber sein, dass ein Singleton static Daten enthält, die auch nach dem Beenden der App noch einige Zeit im Speicher bleiben, wenn du sie nicht explizit aufräumst.
Von daher KANN das schon passieren, wenn du nicht aufpasst.

Antworten