1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  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...
Ähnliche Themen Forum Datum
[ERLEDIGT] Wandernder Text Android App Entwicklung Dienstag um 11:49 Uhr
[OFFEN] Wie bekomme ich Zugriff auf meine externe SD Karte? Android App Entwicklung 23.08.2017
[ERLEDIGT] Daten/Code meiner App speichern? Android App Entwicklung 27.07.2017
[GESCHLOSSEN] Kennt jemand ein Programm , um .DEX Dateien zu öffnen, bearbeiten und wieder speichern? Android App Entwicklung 20.07.2017
[OFFEN] Probleme in den Speicher schreiben Android App Entwicklung 13.07.2017
[ERLEDIGT] (JSON-)Datei speichern Android App Entwicklung 08.04.2017
ArrayList Elemente beinhalten nur Daten des letzten Elements? Android App Entwicklung 25.02.2017
Intent mit Daten (putExtra) zu anderer Activity Android App Entwicklung 14.02.2017
Wie speichere ich dauerhaft Daten unter Android ? Android App Entwicklung 06.02.2017
Uri oder File path als String speichern zum wiederauslesen Android App Entwicklung 26.01.2017

Users found this page by searching for:

  1. android variablen speichern datei beispiel

    ,
  2. android sdk daten speichern

    ,
  3. android objekte speicjern

Du betrachtest das Thema "Daten speichern und Zugriff" im Forum "Android App Entwicklung",