1. schmju5n, 01.03.2011 #1
    schmju5n

    schmju5n Threadstarter Neuer Benutzer

    Hallo,

    ich habe in meiner App ziemlich viele Objekte welche ich immer wieder benötige... Wenn ich diese immer mit putExtras an die nächste Activity übergebe dauert das einfach zu lange...

    Nun wollte ich fragen ob es eine Möglichkeit gibt die Objekte irgendwo zu speichern und dann nur zum Beispiel ne ID zum jeweiligen Objekt an die nächste Activity zu übergeben?

    Wenn ich die Daten in ein txt.File streame ist es auch blöd da die ja dann offen liegen oder?

    Wäre für einen Tip wirklich dankbar...

    Viele Grüße
     
  2. Zonnex, 01.03.2011 #2
    Zonnex

    Zonnex Fortgeschrittenes Mitglied

    Du kannst eine application class definieren.. in dieser kannst du variablen beim start initialisieren und in jeder Methode abrufen:


    public class MYAPP extends Application {
    String xy = new String();
    }

    in den Klassen:
    MYAPP app = ((MYAPP)getApplicationContext());

    und dann einfach app.xy zum aufrufen des Strings.

    MfG ;)

    Edit: die application class muss in der manifest datei angegeben werden!
     
    schmju5n gefällt das.
  3. schmju5n, 01.03.2011 #3
    schmju5n

    schmju5n Threadstarter Neuer Benutzer

    Hört sich sehr interessant an!

    Ich überlege gerade ob es nicht mit Serialisieren der Objekte und abspeichern einfacher wäre... Da ja so dann auch sämmtliche Methoden gleich wieder verfügbar wären...
     
  4. ko5tik, 01.03.2011 #4
    ko5tik

    ko5tik Android-Experte

    Alternative wäre diese im JSON-Format in einen privaten Datei zu speichern.
    Ich kann meine Library empfehlen:

    https://github.com/ko5tik/jsonserializer/
    ( nutze ich um die Highscores zu managen , demnächst kommt ein neues release
    die mit dem Pull-Parser funktioniert - branch gson)
     
    schmju5n gefällt das.
  5. schmju5n, 03.03.2011 #5
    schmju5n

    schmju5n Threadstarter Neuer Benutzer

    Habe das Ganze nun erstmal so gelöst, dass ich die objekte auf der SD Karte speichere mit

    ObjectOutputStream oos;
    oos = new ObjectOutputStream(new FileOutputStream(
    ("/sdcard/daten") ));

    Nun hab ich mal gelesen, dass SD Karten ja verschleißen und jeder Schreibzugriff diesen Prozess bescheunigen...

    Weis jemand wie ich Daten auf dem internen Telefonspeicher legen kann?? Macht das dann mehr Sinn?

    Oder ist die Sache mit dem JSON-Format doch einfacher und besser? Habe leider noch nie damit gearbeitet... Bräuchte da vielleicht zum Einstieg erstmal bisschen Übung und Beispielcode...

    Schöne Grüße
     
  6. Redh3ad, 03.03.2011 #6
    Redh3ad

    Redh3ad Fortgeschrittenes Mitglied

    Nein, intern ist auch Flashspeicher.
    Es stimmt, dass eine Speicherzelle nur eine bestimmte Anzahl an Schreibvorgängen mitmacht, aber dank Techniken wie Wear-leveling kann man das vernachlässigen, man kommt trotzdem auf einige Jahre Lebenszeit (wenn das Ding nicht gerade randvoll ist und deshalb immer wieder in den gleichen Bereich geschrieben werden muss).
     
    schmju5n gefällt das.
  7. schmju5n, 14.03.2011 #7
    schmju5n

    schmju5n Threadstarter Neuer Benutzer


    Kann ich in MYAPP, dann auch auch Objekte speichern??? Wie und wo muss ich die Klasse im Manifest hinzufügen, klappt bei mir noch nicht...
     
  8. ko5tik, 14.03.2011 #8
    ko5tik

    ko5tik Android-Experte

    Ich würde von dieser Art der Serialisierung absehen - wenn der Klasse geändert wird, werden die gespeicherte Daten nicht mehr lesbar.
    (Problem mit Updates).

    Mach lieber XML oder JSON daraus

    So nach etwa 1000000 Schreibvorgängen - also solange lebt kein Telefon ;)

    Weis jemand wie ich Daten auf dem internen Telefonspeicher legen kann?? Macht das dann mehr Sinn?

    Schau mal bei meinen Projekt in die Unit-Testss ein - dort sind eigentlich Beispiele drin

    Laden ( storage ist eine Liste):
    Code:
    
                Reader reader = new BufferedReader(new InputStreamReader(context.openFileInput(fileName)));
                JsonReader source = new JsonReader(reader);
                source.setLenient(true);
    
    
                // clear storage
                storage.clear();
                // and load from reader
                storage.addAll(JSONUnmarshaller.unmarshallArray(source, clazz));
    
                reader.close();
    
    Speichern einer LIste:

    Code:
            OutputStream fos = context.openFileOutput(fileName, 0);
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fos);
            JsonWriter writer = new JsonWriter(outputStreamWriter);
            JSONMarshaller.marshallArray(writer, array.toArray());
            writer.flush();
            writer.close();       
            fos.close();
    
     
    schmju5n gefällt das.
  9. schmju5n, 14.03.2011 #9
    schmju5n

    schmju5n Threadstarter Neuer Benutzer

    Also, es klappt bereits mit der Art, ich muss halt wenn ich meine Objekte ändere diese immer wieder überspeichern... Dann kann ich die wenn ich sie wieder benötige erneut laden und so weiter... Leider ist diese Vorgehensweise sehr zeitaufwendig....

    wie kann ich in dein Projekt einsehen? Und wie schaut es mit der Geschwindikeit bei JSON aus??

    Gibt es ne Möglichkeit, die Objekte in einer Klasse "global" zu definieren, so dass Unterklassen darauf zu greifen können.

    Ich bekomme leider immer nen Nullpointer, wenn ich in der Unterklasse auf ein Objekt der Oberklasse zugreifen will... Kann es sein, dass es der GC wegräumt? Oder muss ich die Objekte speziell deklarieren (final??) ??
     
  10. ko5tik, 14.03.2011 #10
    ko5tik

    ko5tik Android-Experte

    Indem du vorherigen Thread aufmerksam durchliest, und diesen Link findest:

    https://github.com/ko5tik/jsonserializer/

    Wenn du einen NullPointer hast, dan poste mal den Stacktrace & Deine Objekte
    ( angestellte Hellseher sind im Urlaub ;) )

    Da dies ein Open-Source Projekt ist, kanns du deine Vorschäge machen, Repository
    klonen, patches pushen usw ;)
     
  11. Mugendon, 18.03.2011 #11
    Mugendon

    Mugendon Android-Experte

    Tuts dafür nicht die serialVersionUID? Ich habe damit jedenfalls keine Probleme, wenn sich kleinere Dinge an der Klasse ändern.
     
  12. ko5tik, 18.03.2011 #12
    ko5tik

    ko5tik Android-Experte

  13. Mugendon, 18.03.2011 #13
    Mugendon

    Mugendon Android-Experte

  14. ko5tik, 18.03.2011 #14
    ko5tik

    ko5tik Android-Experte

    Der kommt aus dem Google GSON ( es gibt da einen halboffizuellen Download, nut mit den Streaming-Klassen - nur 14KB schwer
    ( notwendige Abhängngkeiten sind in dem Build-Deskriptor aufgeführt - sieh pom.xml )
     
Die Seite wird geladen...
Similar Threads Forum Datum
[ OT / cris- ] Mate S - Mega Account / Daten weg ! Root / CUSTOM-ROMs / Modding für Huawei Mate S Mittwoch um 23:13 Uhr
P8Lite kein Zugriff auf das Netzwerk Huawei P8 Lite Forum Donnerstag um 09:20 Uhr
Suche: Kalender zur Übernahme aller Daten aus Google Kalender (PC) Kalender Donnerstag um 18:02 Uhr
Moto G4 Interner Speicher auf partitionierter SD-Karte Motorola Moto G4 Plus Forum Freitag um 09:49 Uhr
Speicher bereinigen Huawei P9 Lite Forum Freitag um 13:19 Uhr
Astro, kein Zugriff auf SD-KARTEN card Dateimanager Sonntag um 14:47 Uhr
htc one m9 Daten retten HTC One M9 Forum Sonntag um 15:10 Uhr
Zu wenig Speicher beim Update auf Android 7 Android Allgemein Gestern um 11:58 Uhr
iPhone Daten zu bq X... bq Aquaris X / X Pro Forum Gestern um 13:32 Uhr
Erfahrung mit zweiter SIM Karte für Daten Ausland Huawei Mate 9 Forum Gestern um 18:08 Uhr

Users found this page by searching for:

  1. android variablen speichern datei beispiel

    ,
  2. android sdk daten speichern

    ,
  3. android objekte speicjern