Question

la façon dont j'utilise db4o est vraiment juste en lecture seule. Je vais emballer un db avec l'application et faire une mise à jour de fond chaque maintenant et encore que je peux gérer différemment. Mais pour mes activités qui affichent des données de la db, je ne pas besoin de faire des mises à jour, donc pour cette raison que je voudrais juste pour obtenir des données sur la db et ont que les données soient « désactivé » alors quand l'activité a un configurationChange en raison de l'orientation de l'écran ou changer quelque chose, je peux à nouveau mise en page rapidement l'activité. Quelle est la bonne façon de désactiver les objets de sorte qu'ils sont encore utilisables à mon activité. Actuellement, j'ai quelque chose comme code

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

Je l'ai essayé de faire quelque chose comme ça

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

mais il n'a pas semblé work.Do je dois itérer à travers chaque élément de la liste pour le désactiver?

lorsque vous modifiez l'orientation de l'écran sur l'androïde, il frappe mon activité méthode close où je ferme la base de données. mais commence sauvegarder et je ne veux pas remplir à nouveau le MLIST.

donc je continue à obtenir une exception « com.db4o.ext.DatabaseClosedException » parce que dans ma mise en page de l'activité que je fais des choses comme

mList.size()

Je veux juste désactiver les objets b / c je n'ai jamais les mettre à jour, comment puis-je faire?

Était-ce utile?

La solution

Eh bien d'abord, vous voulez faire en sorte que tous les objets sont chargés. db4o retourne uniquement une liste de chargement paresseux, qui charge objet lorsque vous les accès. Vous devez copier vos objets à une liste régulière qui ne nécessite pas une base de données en cours d'exécution. Ceci est assez simple, il suffit de passer le résultat de la requête à une nouvelle liste de tableau:

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

Maintenant, vous ne devriez pas obtenir un DatabaseClosedException.

Je veux juste ajouter que la « désactivation » dans db4o est quelque chose de complètement différent. Il doit faire avec le Activation -Mécanisme. La désactivation est à l'opposé de l'activation. charges d'activation pour objet de la base de données en mémoire. Fait l'objet de désactivation en mémoire à une coque vide sans les données qu'il contient. désactivation explicite est utile pour les scénarios spécifiques à la mémoire en toute sécurité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top