Область Android: что имеется в виду под isValid (), isLoaded (), isManaged ()? - PullRequest
0 голосов
/ 10 мая 2018

В Realm есть три метода isValid(), isLoaded(), isManaged(). Я хочу знать, какой метод следует использовать, когда?

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

IsValid

публичный финальный логический isValid ()

Проверяет, является ли RealmObject допустимым для использования, т. Е. RealmObject не был удален и область не была закрыта. Он всегда будет возвращать true для неуправляемых объектов.

Две вещи делают недействительным RealmObject:

- закрытие экземпляра Realm, которому он принадлежит и удаление объекта в любом потоке (если вы находитесь на автообновлении петельная нить)

IsLoaded

публичный финальный логический isLoaded ()

Проверяет, завершен ли запрос, использованный для поиска этого RealmObject. Асинхронные методы, такие как RealmQuery.findFirstAsync (), возвращают RealmObject, который представляет будущий результат RealmQuery. В этом отношении его можно считать похожим на будущее.

Когда isLoaded () возвращает true, объект представляет результат запроса, даже если в запросе не найдено ни одного объекта, соответствующего параметрам запроса. В этом случае RealmObject станет «нулевым» объектом.

isManaged

public static boolean isManaged (E object)

Проверяет, управляется ли этот объект Царством. Управляемый объект - это просто оболочка вокруг данных в базовом файле Realm. В потоках Looper управляемый объект будет обновляться в реальном времени, поэтому он всегда указывает на последние данные. Можно зарегистрировать прослушиватель изменений, используя addChangeListener (RealmModel, RealmChangeListener), чтобы получать уведомления, когда происходят изменения. Управляемые объекты ограничены потоками, поэтому к ним нельзя получить доступ из других потоков, кроме того, который их создал.

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

Подробнее см .: https://realm.io/docs/java/4.3.3/api/io/realm/RealmObject.html

0 голосов
/ 10 мая 2018

ОТ ДОКУМЕНТОВ

  1. isValid()
  • Проверяет, является ли RealmObject действительным для использования, т. Е. RealmObject не был удален и область не была закрыта. Он всегда будет возвращать true для неуправляемых объектов.

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

    ПРИМЕР:

    // With RealmObject
    yourRealmObject.isValid();
    
  1. isLoaded()
  • Проверяет, завершен ли запрос, использованный для нахождения этого RealmObject.
  • Возвращает: Значение true, если запрос завершен, значение false, если запрос выполняется.

3. isManaged()

  • Проверяет, управляется ли этот объект Царством. Управляемый объект - это просто оболочка вокруг данных в базовом файле Realm. В потоках Looper управляемый объект будет обновляться в реальном времени, поэтому он всегда указывает на последние данные. Можно зарегистрировать прослушиватель изменений, используя addChangeListener (RealmModel, RealmChangeListener), чтобы получать уведомления, когда происходят изменения. Управляемые объекты ограничены потоками, поэтому к ним нельзя получить доступ из других потоков, кроме того, который их создал.

  • Если этот метод возвращает false, объект неуправляемый. Неуправляемый объект - это обычный объект Java, поэтому его можно свободно анализировать между потоками, но данные в объекте не связаны с нижележащим Царством, поэтому они не будут обновляться в реальном времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...