управляемый объект по сравнению с Standalone
автономной 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 или возвращаете из 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
И что такое правильный способ (aka best practice) использовать RealmList
?
Это немного запутанно, но Realm вводит RealmCollection
в следующий крупный релиз (v0.89.0
). См. https://github.com/realm/realm-java/pull/2345.
Обратите внимание, что я не могу хранить свою информацию как realmresult напрямую, потому что im выполняет некоторые манипуляции с данными, которые я не хочу, чтобы они были сохранены.
Если RealmList
находится в управляемом режиме, изменения данных также будут сохранены. Если вы не хотите, чтобы некоторые данные были сохранены, вы можете рассмотреть возможность использования аннотации @Ignore
в этих полях.См https://realm.io/docs/java/latest/#ignoring-properties
Обновление на 04072016
RealmList
VS. RealmResults
:
RealmList
список RealmObject
сохраняется как поле RealmObject
. Он представляет отношения «один ко многим» в Царстве.
RealmResults
- результат запроса.
Оба они (если RealmList
в управляемом режиме) будут автоматически обновляться при изменении данных.
Вы можете получить RealmResults
от RealmList
по RealmList.where()
как:
RealmResults results = myRealmList.where().findAll();
Этот ответ будет немного устаревший после Realm v0.89.0
выпустили из-за нового RealmCollection
.
Привет! Спасибо за ваш ответ! Не могли бы вы рассказать мне, в чем разница между realmlist и realmresults? Если оба могут изменить базовые данные, то почему кто-либо должен использовать realmlist? Я имею в виду, что если я правильно понимаю, realmresults всегда обновляют мой пользовательский интерфейс, так почему я должен их использовать? В чем разница между realmresults и realmlist? Когда мы должны использовать каждый из них? –
Ответ обновлен. – beeender
Спасибо за аналога снова :) Я решил, что мой лучший вариант на данный момент - использовать realmlist, так как я могу добавить и удалить mmethods много, что-то, что не возможно с realmresults, я надеюсь, что realmcollections также будут иметь этот метод также. Это дает нам возможность гибко хранить разные списки одновременно и добавлять к ним новую информацию, не сохраняя их в базе данных. –