패키지 io.realm

클래스 RealmObject

  • 구현된 모든 인터페이스:
    io.realm.internal.ManageableObject, RealmModel
    직접적으로 알려진 하위 클래스:
    DynamicRealmObject

    public abstract class RealmObject
    extends Object
    implements RealmModel, io.realm.internal.ManageableObject
    Realm에서는 RealmObject를 하위 클래스로 분류하고 지속할 필드를 추가하여 RealmObject 클래스를 정의합니다. 그런 다음 Realm 내에서 객체를 생성하고 RealmObject 클래스를 직접 사용하는 대신 사용자 지정 하위 클래스를 사용합니다.

    주석 프로세서는 RealmObject 하위 클래스에 대한 프록시 클래스를 생성합니다.

    지원되는 필드 데이터 유형은 다음과 같습니다.

    • boolean/Boolean
    • 짧은/단어
    • int/Integer
    • long/Long
    • float/Float
    • 더블/더블
    • byte[]
    • 문자열
    • 날짜
    • UUID
    • org.bson.types.Decimal128
    • org.bson.types.ObjectId
    • 모든 RealmObject 하위 클래스
    • RealmList
    • RealmDictionary

    short, intlong 유형은 Realm 내에 저장할 때 long 에 매핑됩니다.

    RealmObject에 적용되는 유일한 제한 사항은 필드가 최종 필드나 변동 필드를 허용하지 않는다는 것입니다. 공개 필드뿐만 아니라 모든 메서드가 허용됩니다. 사용자 지정 생성자를 제공할 때는 인수가 없는 공용 생성자를 선언해야 합니다.

    Ignore 주석이 달린 필드에는 이러한 제한이 없으며 getter나 setter도 필요하지 않습니다.

    Realm은 Index 주석이 달린 필드에 대한 인덱스를 생성합니다. 이렇게 하면 쿼리 속도가 빨라지지만 삽입 및 업데이트에는 부정적인 영향을 미칩니다.

    RealmObject는 서로 다른 스레드 간에 전달할 수 없습니다.

    다음도 참조하세요.
    Realm.createObject(Class), Realm.copyToRealm(RealmModel, ImportFlag...)
    • 생성자 세부 정보

      • RealmObject

        public RealmObject()
    • 메서드 세부 정보

      • deleteFromRealm

        public final void deleteFromRealm()
        현재 연결된 Realm에서 객체를 삭제합니다.

        이 메서드가 호출된 후에는 객체가 유효하지 않게 되며 이에 대해 수행된 모든 작업(읽기 또는 쓰기)이 실패하고 불법적인 상태 예외(IllegalStateException)가 발생합니다.

        예외 처리:
        IllegalStateException - 해당 Realm이 닫혔거나 잘못된 스레드에 있는 경우
        다음도 참조하세요.
        isValid()
      • deleteFromRealm

        public static <E extends RealmModel> void deleteFromRealm​(E object)
        현재 연결된 Realm에서 객체를 삭제합니다.

        이 메서드가 호출된 후에는 객체가 유효하지 않게 되며 이에 대해 수행된 모든 작업(읽기 또는 쓰기)이 실패하고 불법적인 상태 예외(IllegalStateException)가 발생합니다.

        예외 처리:
        IllegalStateException - 해당 Realm이 닫혔거나 잘못된 스레드에 있는 경우
        다음도 참조하세요.
        isValid()
      • isValid

        public final boolean isValid()
        RealmObject가 여전히 사용 가능한지 확인합니다, 즉 RealmObject가 삭제되지 않았거나 Realm 이(가) 닫히지 않았는지 확인합니다. 관리되지 않는 객체에 대해서는 항상 true 을(를) 반환합니다.

        이는 관찰 시 null 상태와 같은 특정 조건의 유효성을 확인하는 데 사용할 수 있습니다.

         
         realm.where(BannerRealm.class).equalTo("type", type).findFirstAsync().asFlowable()
              .filter(result.isLoaded() && result.isValid())
              .first()
         
         
        다음에 의해 지정됩니다:
        isValid 인터페이스에서 io.realm.internal.ManageableObject
        반환합니다:
        true 객체가 여전히 액세스 가능하거나 관리되지 않는 객체이면 false , 그렇지 않으면 을 반환합니다.
        다음도 참조하세요.
        RxJava와 함께 Realm을 사용하는 예제
      • isValid

        public static <E extends RealmModel> boolean isValid​(@Nullable
                                                             E object)
        RealmObject가 여전히 사용 가능한지 확인합니다, 즉 RealmObject가 삭제되지 않았거나 Realm 이(가) 닫히지 않았는지 확인합니다. 관리되지 않는 객체에 대해서는 항상 true 을(를) 반환합니다.
        매개변수:
        object - 유효성을 확인할 RealmObject입니다.
        반환합니다:
        true 객체가 여전히 액세스 가능하거나 관리되지 않는 객체이면 false , 그렇지 않으면 을 반환합니다.
      • IsFrozen

        public final boolean isFrozen()
        이 RealmObject가 동결되었는지 여부를 반환합니다.
        다음에 의해 지정됩니다:
        isFrozen 인터페이스에서 io.realm.internal.ManageableObject
        반환합니다:
        true RealmObject가 동결되면 false 을 반환합니다.
        다음도 참조하세요.
        freeze()
      • 동결

        public final <E extends RealmModel> E freeze()
        이 객체의 동결된 스냅샷을 반환합니다. 동결된 사본은 IllegalStateException 예외 없이 모든 스레드에서 읽고 쿼리할 수 있습니다.

        RealmObject를 동결하면 자체 라이프사이클이 있는 동결된 Realm도 생성되지만, 원래 collection을 생성한 라이브 Realm이 완전히 닫힌 경우(즉, (모든 스레드의 모든 인스턴스가 닫힙니다), 동결된 Realm과 객체도 닫힙니다.

        동결된 객체는 정상적으로 쿼리할 수 있지만 어떤 방식으로든 이를 변경하려고 하거나 리스너를 등록하려고 하면 IllegalStateException 이(가) 발생합니다.

        참고: 버전이 다른 많은 수의 동결된 객체를 활성 상태로 유지하면 Realm의 파일 크기에 부정적인 영향을 미칠 수 있습니다. 이러한 상황을 방지하려면 RealmConfiguration.Builder.maxNumberOfActiveVersions(long) 을(를) 설정할 수 있습니다.

        반환합니다:
        이 객체의 동결된 복사본입니다.
        예외 처리:
        IllegalStateException - 이 메서드가 쓰기 트랜잭션(write transaction) 내부에서 호출된 경우.
      • IsFrozen

        public static <E extends RealmModel> boolean isFrozen​(E object)
        이 RealmObject가 동결되었는지 여부를 반환합니다.
        반환합니다:
        true RealmObject가 동결되면 false 을 반환합니다.
        다음도 참조하세요.
        freeze()
      • 동결

        public static <E extends RealmModel> E freeze​(E object)
        이 객체의 동결된 스냅샷을 반환합니다. 동결된 사본은 IllegalStateException 예외 없이 모든 스레드에서 읽고 쿼리할 수 있습니다.

        RealmObject를 동결하면 자체 라이프사이클이 있는 동결된 Realm도 생성되지만, 원래 collection을 생성한 라이브 Realm이 완전히 닫힌 경우(즉, (모든 스레드의 모든 인스턴스가 닫힙니다), 동결된 Realm과 객체도 닫힙니다.

        동결된 객체는 정상적으로 쿼리할 수 있지만 어떤 방식으로든 이를 변경하려고 하거나 리스너를 등록하려고 하면 IllegalStateException 이(가) 발생합니다.

        참고: 버전이 다른 많은 수의 동결된 객체를 활성 상태로 유지하면 Realm의 파일 크기에 부정적인 영향을 미칠 수 있습니다. 이러한 상황을 방지하려면 RealmConfiguration.Builder.maxNumberOfActiveVersions(long) 을(를) 설정할 수 있습니다.

        반환합니다:
        이 객체의 동결된 복사본입니다.
        예외 처리:
        IllegalStateException - 이 메서드가 쓰기 트랜잭션(write transaction) 내부에서 호출된 경우.
      • isLoaded

        public final boolean isLoaded()
        이 RealmObject를 찾는 데 사용된 쿼리가 완료되었는지 확인합니다.

        과 같은 비동기 메서드는 의 RealmQuery.findFirstAsync() 향후 결과를 RealmObject RealmQuery 나타내는 을 반환합니다. 이 점에서는 Future 와 유사하다고 볼 수 있습니다.

        isLoaded()true 을 반환하면 이 객체는 쿼리 매개변수와 일치하는 객체를 찾지 못한 경우에도 쿼리 결과를 나타냅니다. 이 경우 RealmObject 는 "null" 객체가 됩니다.

        "Null" 객체는 null 을 나타냅니다. 접근자가 호출되면 예외가 발생하므로 메서드를 호출하기 전에 isValid() 도 확인하는 것이 중요합니다. 일반적인 패턴은 다음과 같습니다.

         
         Person person = realm.where(Person.class).findFirstAsync();
         person.isLoaded(); // == false
         person.addChangeListener(new RealmChangeListener() {
              \@Override
              public void onChange(Person person) {
                  person.isLoaded(); // Always true here
                  if (person.isValid()) {
                      // It is safe to access the person.
                  }
              }
         });
         
         

        동기 RealmObject는 정의상 블로킹이므로 이 메서드는 항상 true 을(를) 반환합니다. 이 메서드는 관리되지 않는 객체(Realm 외부에서 생성됨)에 대해 호출하면 true 을(를) 반환합니다.

        반환합니다:
        true 쿼리가 완료되면 false , 쿼리가 진행 중이면 을 반환합니다.
        다음도 참조하세요.
        isValid()
      • isLoaded

        public static <E extends RealmModel> boolean isLoaded​(E object)
        이 RealmObject를 찾는 데 사용된 쿼리가 완료되었는지 확인합니다.

        과 같은 비동기 메서드는 의 RealmQuery.findFirstAsync() 향후 결과를 RealmObject RealmQuery 나타내는 을 반환합니다. 이 점에서는 Future 와 유사하다고 볼 수 있습니다.

        isLoaded()true 을 반환하면 이 객체는 쿼리 매개변수와 일치하는 객체를 찾지 못한 경우에도 쿼리 결과를 나타냅니다. 이 경우 RealmObject 는 "null" 객체가 됩니다.

        "Null" 객체는 null 을 나타냅니다. 접근자가 호출되면 예외가 발생하므로 메서드를 호출하기 전에 isValid() 도 확인하는 것이 중요합니다. 일반적인 패턴은 다음과 같습니다.

         
         Person person = realm.where(Person.class).findFirstAsync();
         RealmObject.isLoaded(person); // == false
         RealmObject.addChangeListener(person, new RealmChangeListener() {
              \@Override
              public void onChange(Person person) {
                  RealmObject.isLoaded(person); // always true here
                  if (RealmObject.isValid(person)) {
                      // It is safe to access the person.
                  }
              }
         });
         
         

        동기 RealmObject는 정의상 블로킹이므로 이 메서드는 항상 true 을(를) 반환합니다. 이 메서드는 관리되지 않는 객체(Realm 외부에서 생성됨)에 대해 호출하면 true 을(를) 반환합니다.

        매개변수:
        object - 확인할 RealmObject입니다.
        반환합니다:
        true 쿼리가 완료되면 false , 쿼리가 진행 중이면 을 반환합니다.
        다음도 참조하세요.
        isValid(RealmModel)
      • isManaged

        public boolean isManaged()
        이 객체가 Realm에서 managed 확인합니다. managed 객체는 기본 Realm 파일의 데이터를 감싸는 래퍼에 불과합니다. 이벤트 루프 스레드에서 managed 객체는 실시간으로 업데이트되어 항상 최신 데이터를 가리킵니다. addChangeListener(RealmChangeListener) 를 사용하여 변경 사항이 발생하면 알림을 받도록 변경 리스너를 등록할 수 있습니다. managed 객체는 스레드 제한되어 있으므로 해당 객체를 만든 스레드 이외의 다른 스레드에서 액세스할 수 없습니다.

        이 메서드가 false 를 반환하면 객체는 관리되지 않는 객체입니다. 관리되지 않는 객체는 일반적인 Java 객체이므로 스레드 간에 자유롭게 구문 분석할 수 있지만 객체의 데이터는 기본 Realm에 연결되어 있지 않으므로 실시간으로 업데이트되지 않습니다.

        Realm.copyToRealm(RealmModel, ImportFlag...) 를 사용하여 unmanaged 객체에서 managed 객체를 만들 수 있습니다. managed되지 않는 객체는 Realm.copyFromRealm(RealmModel) 를 사용하여 managed 객체에서 만들 수 있습니다.

        다음에 의해 지정됩니다:
        isManaged 인터페이스에서 io.realm.internal.ManageableObject
        반환합니다:
        true 객체가 managed 경우 false (관리되지 않는 경우)
      • isManaged

        public static <E extends RealmModel> boolean isManaged​(E object)
        이 객체가 Realm에서 managed 확인합니다. managed 객체는 기본 Realm 파일의 데이터를 감싸는 래퍼에 불과합니다. 이벤트 루프 스레드에서 managed 객체는 실시간으로 업데이트되어 항상 최신 데이터를 가리킵니다. addChangeListener(RealmModel, RealmChangeListener) 를 사용하여 변경 사항이 발생하면 알림을 받도록 변경 리스너를 등록할 수 있습니다. managed 객체는 스레드 제한되어 있으므로 해당 객체를 만든 스레드 이외의 다른 스레드에서 액세스할 수 없습니다.

        이 메서드가 false 를 반환하면 객체는 관리되지 않는 객체입니다. 관리되지 않는 객체는 일반적인 Java 객체이므로 스레드 간에 자유롭게 구문 분석할 수 있지만 객체의 데이터는 기본 Realm에 연결되어 있지 않으므로 실시간으로 업데이트되지 않습니다.

        Realm.copyToRealm(RealmModel, ImportFlag...) 를 사용하여 unmanaged 객체에서 managed 객체를 만들 수 있습니다. managed되지 않는 객체는 Realm.copyFromRealm(RealmModel) 를 사용하여 managed 객체에서 만들 수 있습니다.

        반환합니다:
        true 객체가 managed 경우 false (관리되지 않는 경우)
      • getRealm

        public Realm getRealm()
        Realm 이 가 속한 인스턴스를 RealmObject 반환합니다.

        반환된 인스턴스에 대해 을(를) 호출 해서는 Closeable.close() 안 됩니다.

        반환합니다:
        이 객체가 속한 Realm 인스턴스이거나 이 객체가 관리되지 않는 경우 null 입니다.
        예외 처리:
        IllegalStateException - 이 객체가 DynamicRealmObject 의 인스턴스이거나 객체가 이미 삭제되었거나 해당 Realm 가 이미 닫힌 경우
      • 로드

        public final boolean load()
        비동기 쿼리를 차단합니다. 이렇게 하면 등록된 리스너도 trigger됩니다.

        참고: 관리되지 않는 객체(Realm 외부에서 생성됨)에 대해 호출하면 true 이(가) 반환됩니다.

        반환합니다:
        true 쿼리를 성공적으로 완료했으면 false 을 반환합니다.
      • 로드

        public static <E extends RealmModel> boolean load​(E object)
        비동기 쿼리를 차단합니다. 이렇게 하면 등록된 리스너도 trigger됩니다.

        참고: 관리되지 않는 객체(Realm 외부에서 생성됨)에 대해 호출하면 true 이(가) 반환됩니다.

        매개변수:
        object - RealmObject를 사용하여 강제로 로드합니다.
        반환합니다:
        true 쿼리를 성공적으로 완료했으면 false 을 반환합니다.
      • addChangeListener

        public final <E extends RealmModel> void addChangeListener​(RealmObjectChangeListener<E> listener)
        이 RealmObject에 변경 리스너를 추가하여 변경 사항에 대한 자세한 정보를 가져옵니다. 값 필드 또는 참고 RealmObject 필드가 변경되거나 RealmList 필드 자체가 변경되면 리스너가 트리거됩니다.

        변경 리스너를 등록해도 기본 RealmObject가 가비지 수집되는 것을 방지할 수는 없습니다. RealmObject가 가비지 수집되면 변경 리스너 트리거가 중지됩니다. 이를 방지하려면 클래스 변수와 같이 적절한 길이로 강력한 참고를 유지하세요.

         
         public class MyActivity extends Activity {
        
             private Person person; // Strong reference to keep listeners alive
        
             \@Override
             protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               person = realm.where(Person.class).findFirst();
               person.addChangeListener(new RealmObjectChangeListener<Person>() {
                   \@Override
                   public void onChange(Person person, ObjectChangeSet changeSet) {
                       // React to change
                   }
               });
             }
         }
         
         
        매개변수:
        listener - 알림을 받을 변경 리스너입니다.
        예외 처리:
        IllegalArgumentException - 변경 리스너가 null 이거나 객체가 관리되지 않는 객체인 경우
        IllegalStateException - 이벤트 루프가 아닌 또는 IntentService 스레드에서 리스너를 추가하려고 하는 경우.
        IllegalStateException - 트랜잭션 내에 리스너를 추가하려는 경우.
      • addChangeListener

        public final <E extends RealmModel> void addChangeListener​(RealmChangeListener<E> listener)
        값 필드 또는 참고 RealmObject 필드가 변경되거나 RealmList 필드 자체가 변경되면 트리거되는 변경 리스너를 이 RealmObject에 추가합니다.

        변경 리스너를 등록해도 기본 RealmObject가 가비지 수집되는 것을 방지할 수는 없습니다. RealmObject가 가비지 수집되면 변경 리스너 트리거가 중지됩니다. 이를 방지하려면 클래스 변수와 같이 적절한 길이로 강력한 참고를 유지하세요.

         
         public class MyActivity extends Activity {
        
             private Person person; // Strong reference to keep listeners alive
        
             \@Override
             protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               person = realm.where(Person.class).findFirst();
               person.addChangeListener(new RealmChangeListener<Person>() {
                   \@Override
                   public void onChange(Person person) {
                       // React to change
                   }
               });
             }
         }
         
         
        매개변수:
        listener - 알림을 받을 변경 리스너입니다.
        예외 처리:
        IllegalArgumentException - 변경 리스너가 null 이거나 객체가 관리되지 않는 객체인 경우
        IllegalStateException - 이벤트 루프가 아닌 또는 IntentService 스레드에서 리스너를 추가하려고 하는 경우.
        IllegalStateException - 트랜잭션 내에 리스너를 추가하려는 경우.
      • addChangeListener

        public static <E extends RealmModel> void addChangeListener​(E object,
                                                                    RealmObjectChangeListener<E> listener)
        RealmObject에 변경 리스너를 추가하여 변경 사항에 대한 자세한 정보를 가져옵니다. 값 필드 또는 참고 RealmObject 필드가 변경되거나 RealmList 필드 자체가 변경되면 리스너가 트리거됩니다.

        변경 리스너를 등록해도 기본 RealmObject가 가비지 수집되는 것을 방지할 수는 없습니다. RealmObject가 가비지 수집되면 변경 리스너 트리거가 중지됩니다. 이를 방지하려면 클래스 변수와 같이 적절한 길이로 강력한 참고를 유지하세요.

         
         public class MyActivity extends Activity {
        
             private Person person; // Strong reference to keep listeners alive
        
             \@Override
             protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               person = realm.where(Person.class).findFirst();
               person.addChangeListener(new RealmObjectChangeListener<Person>() {
                   \@Override
                   public void onChange(Person person, ObjectChangeSet changeSet) {
                       // React to change
                   }
               });
             }
         }
         
         
        매개변수:
        object - 리스너를 추가할 RealmObject입니다.
        listener - 알림을 받을 변경 리스너입니다.
        예외 처리:
        IllegalArgumentException - objectnull 또는 관리되지 않는 객체이거나 변경 리스너가 null 인 경우
        IllegalStateException - 이벤트 루프가 아닌 또는 IntentService 스레드에서 리스너를 추가하려고 하는 경우.
        IllegalStateException - 트랜잭션 내에 리스너를 추가하려는 경우.
      • addChangeListener

        public static <E extends RealmModel> void addChangeListener​(E object,
                                                                    RealmChangeListener<E> listener)
        값 필드 또는 참고 RealmObject 필드가 변경되거나 RealmList 필드 자체가 변경되면 트리거되는 변경 리스너를 RealmObject에 추가합니다.

        변경 리스너를 등록해도 기본 RealmObject가 가비지 수집되는 것을 방지할 수는 없습니다. RealmObject가 가비지 수집되면 변경 리스너 트리거가 중지됩니다. 이를 방지하려면 클래스 변수와 같이 적절한 길이로 강력한 참고를 유지하세요.

         
         public class MyActivity extends Activity {
        
             private Person person; // Strong reference to keep listeners alive
        
             \@Override
             protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               person = realm.where(Person.class).findFirst();
               person.addChangeListener(new RealmChangeListener<Person>() {
                   \@Override
                   public void onChange(Person person) {
                       // React to change
                   }
               });
             }
         }
         
         
        매개변수:
        object - 리스너를 추가할 RealmObject입니다.
        listener - 알림을 받을 변경 리스너입니다.
        예외 처리:
        IllegalArgumentException - objectnull 또는 관리되지 않는 객체이거나 변경 리스너가 null 인 경우
        IllegalStateException - 이벤트 루프가 아닌 또는 IntentService 스레드에서 리스너를 추가하려고 하는 경우.
        IllegalStateException - 트랜잭션 내에 리스너를 추가하려는 경우.
      • removeChangeListener

        public final void removeChangeListener​(RealmObjectChangeListener listener)
        이전에 등록된 리스너를 제거합니다.
        매개변수:
        listener - 제거할 인스턴스입니다.
        예외 처리:
        IllegalArgumentException - 변경 리스너가 null 이거나 객체가 관리되지 않는 객체인 경우
        IllegalStateException - 이벤트 루프가 아닌 스레드에서 리스너를 제거하려고 하는 경우.
      • removeChangeListener

        public final void removeChangeListener​(RealmChangeListener listener)
        이전에 등록된 리스너를 제거합니다.
        매개변수:
        listener - 제거할 인스턴스입니다.
        예외 처리:
        IllegalArgumentException - 변경 리스너가 null 이거나 객체가 관리되지 않는 객체인 경우
        IllegalStateException - 이벤트 루프가 아닌 스레드에서 리스너를 제거하려고 하는 경우.
      • removeChangeListener

        public static <E extends RealmModel> void removeChangeListener​(E object,
                                                                       RealmObjectChangeListener listener)
        지정된 RealmObject에 이전에 등록된 리스너를 제거합니다.
        매개변수:
        object - 리스너를 제거할 RealmObject입니다.
        listener - 제거할 인스턴스입니다.
        예외 처리:
        IllegalArgumentException - object 또는 변경 리스너가 null 인 경우
        IllegalArgumentException - 객체가 관리되지 않는 RealmObject인 경우.
        IllegalStateException - 이벤트 루프가 아닌 스레드에서 리스너를 제거하려고 하는 경우.
      • removeChangeListener

        public static <E extends RealmModel> void removeChangeListener​(E object,
                                                                       RealmChangeListener<E> listener)
        지정된 RealmObject에 이전에 등록된 리스너를 제거합니다.
        매개변수:
        object - 리스너를 제거할 RealmObject입니다.
        listener - 제거할 인스턴스입니다.
        예외 처리:
        IllegalArgumentException - object 또는 변경 리스너가 null 인 경우
        IllegalArgumentException - 객체가 관리되지 않는 RealmObject인 경우.
        IllegalStateException - 이벤트 루프가 아닌 스레드에서 리스너를 제거하려고 하는 경우.
      • 모든 변경 리스너 제거

        public final void removeAllChangeListeners()
        등록된 모든 리스너를 제거합니다.
      • 모든 변경 리스너 제거

        public static <E extends RealmModel> void removeAllChangeListeners​(E object)
        지정된 RealmObject에서 등록된 모든 리스너를 제거합니다.
        매개변수:
        object - 모든 리스너를 제거할 RealmObject입니다.
        예외 처리:
        IllegalArgumentException - 객체가 null 이거나 Realm에서 managed 되지 않는 경우.
      • asFlowable

        public final <E extends RealmObjectFlowable<E> asFlowable()
        이 RealmObject의 변경 사항을 모니터링하는 RxJava Flowable을 반환합니다. 구독 시 현재 객체를 방출합니다. 객체 업데이트는 RealmObject가 업데이트될 때마다 계속 내보내지며 onComplete 은(는) 호출되지 않습니다.

        RealmObject 플로우어블을 연결할 때 obj.<MyRealmObjectClass>asFlowable() 을 사용하여 유형 정보를 전달하지 않으면 다음 옵저버블의 유형은 RealmObject 이(가) 됩니다.

        Realm Flowable에서 방출된 항목은 동결됩니다( freeze() 참조). 즉, 변경할 수 없으며 모든 스레드에서 읽을 수 있습니다.

        Realm Flowable은 항상 라이브 Realm을 보유한 스레드에서 항목을 방출합니다. 즉, 추가 처리를 수행해야 하는 경우 계산 스케줄러에서 값을 관찰하는 것이 좋습니다.

        obj.asFlowable() .observeOn(Schedulers.computation()) .map((rxObj) -> doExpensiveWork(rxObj)) .observeOn(AndroidSchedulers.mainThread()) .subscribe( ... );

        asFlowable() 에서 항목 방출을 중지하려면 first() 연산자를 사용하여 첫 번째 항목만 방출하도록 RxJava에 지시할 수 있습니다.

         
         obj.asFlowable()
              .filter(obj -> obj.isLoaded())
              .first()
              .subscribe( ... ) // You only get the object once
         
         

        유형 매개변수:
        E - 관찰 중인 RealmObject 클래스입니다. 이 클래스 또는 해당 클래스의 상위 유형이어야 합니다.
        반환합니다:
        onNext 만 호출하는 RxJava Observable입니다. 절대 onComplete 또는 OnError 를 호출하지 않습니다.
        예외 처리:
        UnsupportedOperationException - 필요한 RxJava 프레임워크가 클래스 경로에 없거나 해당 Realm 인스턴스가 RxJava를 지원하지 않는 경우.
        IllegalStateException - Realm이 루퍼 스레드에서 열리지 않은 경우.
        다음도 참조하세요.
        RxJava 및 Realm
      • asChangesetObservable

        public final <E extends RealmObjectObservable<ObjectChange<E>> asChangesetObservable()
        이 RealmObject의 변경 사항을 모니터링하는 Rx Observable을 반환합니다. 구독 시 현재 RealmObject를 방출합니다. RealmObject를 업데이트할 때마다 RealmObject와 ObjectChangeSet 로 구성된 쌍이 전송됩니다. RealmObject가 처음 방출될 때 변경 세트는 null 가 됩니다.

        RealmObject는 업데이트될 때마다 계속 방출되며 onComplete 은(는) 호출되지 않습니다.

        Realm Observable에서 방출된 항목은 동결됩니다( freeze() 참조). 즉, 변경할 수 없으며 모든 스레드에서 읽을 수 있습니다.

        Realm Observable은 항상 라이브 Realm을 보유한 스레드에서 항목을 방출합니다. 즉, 추가 처리를 수행해야 하는 경우 계산 스케줄러에서 값을 관찰하는 것이 좋습니다.

        obj.asChangesetObservable() .observeOn(Schedulers.computation()) .map((rxObj, changes) -> doExpensiveWork(rxObj, changeså)) .observeOn(AndroidSchedulers.mainThread()) .subscribe( ... );

        반환합니다:
        onNext 만 호출하는 RxJava Observable입니다. 절대 onComplete 또는 OnError 를 호출하지 않습니다.
        예외 처리:
        UnsupportedOperationException - 필요한 RxJava 프레임워크가 클래스 경로에 없거나 해당 Realm 인스턴스가 RxJava를 지원하지 않는 경우.
        IllegalStateException - Realm이 루퍼 스레드에서 열리지 않은 경우.
        다음도 참조하세요.
        RxJava 및 Realm
      • asFlowable

        public static <E extends RealmModelFlowable<E> asFlowable​(E object)
        이 RealmObject의 변경 사항을 모니터링하는 RxJava Flowable을 반환합니다. 구독 시 현재 객체를 방출합니다. RealmObject가 업데이트될 때마다 객체 업데이트가 계속 내보내지며 onComplete 은(는) 호출되지 않습니다.

        RealmObject 옵저버블을 연결할 때 obj.<MyRealmObjectClass>asFlowable() 을(를) 사용하여 유형 정보를 전달하지 않으면 다음 옵저버블의 유형이 RealmObject 이(가) 됩니다.

        Realm Flowable에서 방출된 항목은 동결됩니다( freeze() 참조). 즉, 변경할 수 없으며 모든 스레드에서 읽을 수 있습니다.

        Realm Flowable은 항상 라이브 Realm을 보유한 스레드에서 항목을 방출합니다. 즉, 추가 처리를 수행해야 하는 경우 계산 스케줄러에서 값을 관찰하는 것이 좋습니다.

        obj.asFlowable() .observeOn(Schedulers.computation()) .map((rxObj) -> doExpensiveWork(rxObj)) .observeOn(AndroidSchedulers.mainThread()) .subscribe( ... );

        asFlowable() 에서 항목 방출을 중지하려면 first() 연산자를 사용하여 첫 번째 항목만 방출하도록 RxJava에 지시할 수 있습니다.

         
         obj.asFlowable()
              .filter(obj -> obj.isLoaded())
              .first()
              .subscribe( ... ) // You only get the object once
         
         
        매개변수:
        object - 관찰 중인 RealmObject 클래스입니다. 이 클래스 또는 해당 클래스의 상위 유형이어야 합니다.
        반환합니다:
        onNext 만 호출하는 RxJava Observable입니다. 절대 onComplete 또는 OnError 를 호출하지 않습니다.
        예외 처리:
        UnsupportedOperationException - 필요한 RxJava 프레임워크가 클래스 경로에 없는 경우.
        IllegalStateException - Realm이 루퍼 스레드에서 열리지 않은 경우.
        다음도 참조하세요.
        RxJava 및 Realm
      • asChangesetObservable

        public static <E extends RealmModelObservable<ObjectChange<E>> asChangesetObservable​(E object)
        이 RealmObject의 변경 사항을 모니터링하는 Rx Observable을 반환합니다. 구독 시 현재 RealmObject를 방출합니다. RealmObject를 업데이트할 때마다 RealmObject와 ObjectChangeSet 로 구성된 쌍이 전송됩니다. RealmObject가 처음 방출될 때 변경 세트는 null 가 됩니다.

        RealmObject는 업데이트될 때마다 계속 방출되며 onComplete 은(는) 호출되지 않습니다.

        Realm Observable에서 방출된 항목은 동결됩니다( freeze() 참조). 즉, 변경할 수 없으며 모든 스레드에서 읽을 수 있습니다.

        Realm Observable은 항상 라이브 Realm을 보유한 스레드에서 항목을 방출합니다. 즉, 추가 처리를 수행해야 하는 경우 계산 스케줄러에서 값을 관찰하는 것이 좋습니다.

        obj.asChangesetObservable() .observeOn(Schedulers.computation()) .map((rxObj, changes) -> doExpensiveWork(rxObj, changeså)) .observeOn(AndroidSchedulers.mainThread()) .subscribe( ... );

        매개변수:
        object - 관찰 중인 RealmObject 클래스입니다. 이 클래스 또는 해당 클래스의 상위 유형이어야 합니다.
        반환합니다:
        onNext 만 호출하는 RxJava Observable입니다. 절대 onComplete 또는 OnError 를 호출하지 않습니다.
        예외 처리:
        UnsupportedOperationException - 필요한 RxJava 프레임워크가 클래스 경로에 없거나 해당 Realm 인스턴스가 RxJava를 지원하지 않는 경우.
        IllegalStateException - Realm이 루퍼 스레드에서 열리지 않은 경우.
        다음도 참조하세요.
        RxJava 및 Realm