Frage

die Art, wie ich bin mit db4o ist wirklich nur schreibgeschützt. Ich werde eine db mit der Anwendung verpacken und tun, um es einige Hintergrundaktualisierung hin und wieder, die ich anders umgehen kann. Aber für meine Aktivitäten, die Daten aus der DB angezeigt wird, brauche ich kein Updates zu tun, also aus diesem Grunde wie ich würde nur Daten aus der DB zu bekommen und haben diese Daten sein „deaktiviert“ so, wenn die Aktivität hat ein configurationChange aufgrund der Bildschirmausrichtung zu ändern oder etwas, ich kann schnell Layout wieder die Aktivität. Was ist der richtige Weg, um Objekte zu deaktivieren, so dass sie noch brauchbar zu meiner Tätigkeit sind. Zur Zeit habe ich Code so etwas wie

List<MyObject> mList = db().queryByExample(persistentClass);  // db just gets my ObjectContainer

Ich habe so etwas wie dies zu tun versucht,

db().ext().deactivate(mList);

, aber es war nicht zu work.Do schien muss ich durchlaufen jedes Element der Liste, um ihn zu deaktivieren?

Wenn Sie die Bildschirmausrichtung auf dem Android ändern, trifft es meine Aktivität schließen Methode, wo ich die Datenbank schließen. aber dann beginnt sichern und ich will nicht wieder die MList aufzufüllen.

so ich halte eine „com.db4o.ext.DatabaseClosedException“ Ausnahme, weil in meinem Layout der Aktivität immer ich tue Dinge wie

mList.size()

Ich möchte wirklich nur die Objekte deaktivieren b / c ich sie nie aktualisieren müssen, wie kann ich das tun?

War es hilfreich?

Lösung

Nun zunächst, wollen Sie sicherstellen, dass alle Objekte geladen werden. db4o liefert nur einen faulen Ladeliste, die Lasten Objekt, wenn Sie darauf zugreifen. Sie müssen Ihre Objekte in eine reguläre Liste kopieren, die nicht eine laufende Datenbank erfordert. Das ist ganz einfach, geben Sie einfach das Ergebnis der Abfrage auf eine neue Array-Liste:

 List<MyObject> mList = new ArrayList<MyObject>(db().queryByExample(persistentClass)); 

Nun sollten Sie keine DatabaseClosedException bekommen.

Dann möchte ich nur hinzufügen, dass die ‚Deaktivierung‘ in db4o etwas ganz anderes ist. Es hat mit der Aktivierung -Mechanismus. Die Deaktivierung ist das Gegenteil der Aktivierung. Die Aktivierung Lasten aus der Datenbank in den Speicher zu widersprechen. Die Deaktivierung wird das Objekt im Speicher in einen leeren Rumpf ohne Daten darin. Explizite Deaktivierung ist nur für spezielle Szenarien sichere Speicher.

scroll top