2016-05-11 7 views
1

Hallo, ich bin eine Arraylist im Speicher zu schreibenSpeicherung automatisch in Codename gelöscht bekommen ein

private void addItemToRecentListStorage1(Hashtable h){ Storage s1 = Storage.getInstance(); ArrayList<Hashtable> a = (ArrayList<Hashtable>)s1.readObject("RecentItems"); ... ... a.add(0,h);//adding on top s1.writeObject("RecentItems", a); }

Verwendung Wenn ich inspizieren s1 sofort nach dem 1. Element hinzugefügt wird, zeigt es mir angemessen in Speicherhierarchie.

1st entry has 4 elements

aber zu einem Zeitpunkt, 2. Element der Zugabe (HashTable) klar die erste Hash-Tabelle Werte gespeichert, obwohl es als ein leeres Element zeigt.

before adding 2nd entry

Mittel, erhalte ich ein Element (HashTable) in Arraylist von readObject-(), aber die Hash-Tabelle den alle vier Elemente sind ausgelöscht. Dies funktionierte früher, aber jetzt löscht HashTable Daten von Arraylist.

Also jedes Mal bekomme ich die Anzahl der Elemente um 1 erhöht, wenn ich Element hinzufügen. Alle Werte der vorherigen Hashtables werden jedoch gelöscht.

Das gleiche passiert in Emulator sowie Gerät.

Antwort

0

Überprüfen Sie, ob in der Konsole eine Ausnahmebedingung vorliegt, die möglicherweise ausgelöst wurde, weil die Serialisierung für einige Objekte im Array fehlgeschlagen ist.

+0

Sorry für die späte Antwort, ich überprüft Debugger-Konsole in der Ausgabe, aber leider habe ich keine Ausnahme oder Warnung erhalten. –

+0

Aber das Seltsame, was mir aufgefallen ist, ist, wenn ich den ersten Eintrag hinzufüge und den Emulator schließe, dann führe das Projekt erneut aus und wenn ich den zweiten Eintrag hinzufüge, werden beide Einträge angezeigt. Mit anderen Worten, in einem einzigen Durchlauf, wenn ich mehrere Elemente hinzufüge, liest es nicht aus dem Speicher. Aber wenn ich den Emulator schließe und für jedes Element neu beginne, liest es alle Elemente (Speicherelemente) korrekt. Finden Sie heraus, gibt es eine Ressource, die die Speicherdatei dies verursachen könnte? oder innerhalb des single run Cursors zeigt möglicherweise auf einen Datensatz und wenn ich 2. Datensatz im Speicher anschließe, dann wird der erste Datensatz freigegeben? –

+1

Gibt es eine Möglichkeit der parallelen Nutzung? Meine Vermutung ist, dass Sie zwei gleichzeitige Zugriffe auf RecentItems haben. Einer liest das einzelne Gegenstandsfeld und beide speichern es und einer von ihnen gewinnt das Rennen. –