Управляемый объект и автономный
Автономный RealmObject
/RealmList
создается с помощью конструктора объекта или метода Realm.copyFromRealm()
. Доступ к данным в автономном объекте не будет проходить через механизм хранения подчеркивания, вместо этого он ведет себя как обычный объект. Поэтому автономный объект не будет обновляться при изменении данных. Примеры для автономного объекта:
MyModel myModel = new MyModel(); // Standalone
MyModel model = realm.where(MyModel.class).findFirst(); // This is managed object.
MyModel standaloneModel = realm.copyFromRealm(model); // The returned value is standalone object.
MyList myList = new MyList(); // Standalone
Управляемые RealmObject
/RealmList
получают доступ к данным через базовый механизм хранения Realm. Они создаются, когда вы делаете запрос из Realm или возвращаетесь из copyToRealm()
(и его альтернативных методов). Нравиться:
MyModel model = realm.where(MyModel.class).findFirst();
MyModel model = new MyModel(); // This is a standalone object.
model = realm.copyToRealm(modle); // The returned value is managed by Realm now.
MyList myList = realm.where(MyModel.class).findFirst().getMyList();
Как правильно обновить пользовательский интерфейс
Предлагается использовать прослушиватели изменений Realm. См. https://realm.io/docs/java/latest/#notifications.
И как правильно (также известный как передовой опыт) использовать RealmList
?
Это немного сбивает с толку, но Realm представляет RealmCollection
в следующем крупном выпуске (v0.89.0
). См. https://github.com/realm/realm-java/pull/2345.
Обратите внимание, что я не могу хранить свою информацию как результат области напрямую, потому что я выполняю некоторые манипуляции с данными, которые я не хочу сохранять.
Если RealmList
находится в управляемом режиме, изменения данных также будут сохранены. Если вы не хотите, чтобы некоторые данные сохранялись, вы можете использовать аннотацию @Ignore
для этих полей. См. https://realm.io/docs/java/latest/#ignoring-properties< /а>
Обновление от 04072016
RealmList
против RealmResults
:
RealmList
— это список RealmObject
, сохраненный как поле RealmObject
. Он представляет отношения «один ко многим» в Realm.
RealmResults
- это результаты запроса.
Оба они (если RealmList
в управляемом режиме) будут автоматически обновляться при изменении данных.
Вы можете получить RealmResults
из RealmList
по RealmList.where()
< /а> как:
RealmResults results = myRealmList.where().findAll();
Этот ответ будет немного устаревшим после выпуска Realm v0.89.0
из-за нового RealmCollection
.
06.04.2016