Intereting Posts
Множество элементов адаптера синхронизации Android, таких как учетная запись Google? Как приложения Media Player Android, такие как MXPlayer и MoboPlayer, воспроизводят неподдерживаемые форматы файлов, такие как MKV? Null value in entry: otherfileoutputs = null Eclipse не может найти файл android.support.v4.widget.SwipeRefreshLayout Событие синхронизации добавлено программно с календарем Google в android Как получить onClickListener () событие на пользовательском панели действий Примеры для Robotium Недавно выпущена «Аутентификация с сервисами Google Play», проблемы с получением токена через GoogleAuthUtil.getToken Android UI – горизонтальный просмотр прокрутки в Android Как я могу получить имя пакета текущего запуска в android 2.3 и выше? Прозрачный фон Добавление представлений между элементами в GridView Android Создайте учетную запись Sip Programmatically Откройте новое рабочее пространство в студии Android Как правильно использовать и отслеживать приложения?

Отделить RealmObject от Realm

Я хочу «отделить» объект RealmObject от его Realm , что означает, что я хочу иметь возможность возвращать объект RealmObject из метода и иметь возможность использовать его после close экземпляра Realm .

Что-то вроде этого:

 public Person getPersonWithId(final Context context, final String personId){ Realm realm = Realm.getInstance(context); Person person = realm.where.....; realm.close(); return person; } 

Но, например, getPersonWithId(mContext, personId).getName() будет выдавать ошибку, как и ожидалось. Хотелось бы что-то вроде Person person = person.detachFromRealm(); ,

Кто-нибудь знает решение / обходной путь для этой проблемы?

Solutions Collecting From Web of "Отделить RealmObject от Realm"

Android realm теперь поддерживает прикрепление и удаление объекта realm. Таким образом, вы можете сделать так:

 RealmObject objectCopy = Realm.copyFromRealm(RealmObject object); 

Вот подробности из документации:

Экземпляры объектов Realm могут быть либо управляемыми, либо неуправляемыми.

Управляемые объекты сохраняются в Realm, всегда обновляются и потоки ограничены. Они, как правило, более легкие, чем неуправляемая версия, поскольку они занимают меньше места на куче Java.

Неуправляемые объекты похожи на обычные объекты Java, они не сохраняются и не обновляются автоматически. Они могут свободно перемещаться по нитям.

Можно преобразовать между двумя состояниями, используя Realm.copyToRealm () и Realm.copyFromRealm ()

Для этого есть запрос функции. Для этого нет реального отличного решения, только обходные пути.

Обходной путь заключается в ручной копировании данных с одного объекта на другой. Мои RealmObjects имеют тонны полей, поэтому вручную копирование свойств из одного объекта в другое является NO GO.

Вместо того, чтобы вручную писать «код копирования», я решил использовать MapStruct . Вот проект песочницы с Realm и MapStruct . Кажется, что все работает отлично, по крайней мере, для простых моделей.