2011-01-13 5 views
0

способ, которым я пользуюсь db4o, действительно доступен только для чтения. Я упакую db с приложением и делаю некоторое обновление фона для него время от времени, с которым я могу обращаться по-разному. Но для моих действий, которые отображают данные из db, мне не нужно делать какие-либо обновления, поэтому по этой причине я просто хотел бы получить данные из базы данных и «деактивировать» эти данные, поэтому, когда активность изменение конфигурации Из-за изменения ориентации экрана или чего-то еще, я могу быстро развернуть активность. Каков правильный способ деактивации объектов, чтобы они все еще пригодны для моей деятельности. В настоящее время у меня есть код что-то вродеandroid db4o правильно деактивировать объект

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

Я пытался сделать что-то вроде этого

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

, но это не казалось work.Do мне нужно перебирать каждый элемент списка, чтобы отключить его?

Когда вы меняете ориентацию экрана на андроиде, он удаляет мой метод закрытия, когда я закрываю базу данных. но затем начинает резервное копирование, и я не хочу снова заполнять миллионер.

так я продолжаю получать «com.db4o.ext.DatabaseClosedException» исключение, потому что в моем макете деятельности я делать такие вещи, как

mList.size() 

Я просто хочу, чтобы отключить объекты б/CI никогда не придется обновлять их, как может я делаю это?

ответ

4

Ну, во-первых, вы хотите, чтобы все объекты были загружены. db4o возвращает только ленивый список загрузки, который загружает объект при доступе к ним. Вам нужно скопировать свои объекты в обычный список, который не требует работы базы данных. Это довольно просто, просто передать результат запроса в новый список массива:

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

Теперь вы не должны получить DatabaseClosedException.

Тогда я просто хочу добавить, что «деактивация» в db4o - это нечто совершенно другое. Это связано с механизмом Activation. Деактивация - это противоположность активации. Активация загружает объект из базы данных в память. Деактивация делает объект в памяти пустым корпусом без данных. Явная деактивация полезна только для специальных сценариев для безопасной памяти.

+0

ах, приятно знать, у меня была деактивация неправильно понята, спасибо за разъяснение. – slim

Смежные вопросы