클래스 RealmObject
- java.lang.Object
-
- 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
,int
및long
유형은 Realm 내에 저장할 때long
에 매핑됩니다.RealmObject에 적용되는 유일한 제한 사항은 필드가 최종 필드나 변동 필드를 허용하지 않는다는 것입니다. 공개 필드뿐만 아니라 모든 메서드가 허용됩니다. 사용자 지정 생성자를 제공할 때는 인수가 없는 공용 생성자를 선언해야 합니다.
Ignore
주석이 달린 필드에는 이러한 제한이 없으며 getter나 setter도 필요하지 않습니다.Realm은
Index
주석이 달린 필드에 대한 인덱스를 생성합니다. 이렇게 하면 쿼리 속도가 빨라지지만 삽입 및 업데이트에는 부정적인 영향을 미칩니다.RealmObject는 서로 다른 스레드 간에 전달할 수 없습니다.
-
-
생성자 요약
생성자 Constructor 설명 RealmObject()
-
메서드 요약
모든 메서드 정적 메서드 인스턴스 메서드 구체적인 방법 수정자 및 유형 메서드 설명 static <E extends RealmModel>
voidaddChangeListener(E object, RealmChangeListener<E> listener)
값 필드 또는 참고 RealmObject 필드가 변경되거나 RealmList 필드 자체가 변경되면 트리거되는 변경 리스너를 RealmObject에 추가합니다.static <E extends RealmModel>
voidaddChangeListener(E object, RealmObjectChangeListener<E> listener)
RealmObject에 변경 리스너를 추가하여 변경 사항에 대한 자세한 정보를 가져옵니다.<E extends RealmModel>
voidaddChangeListener(RealmChangeListener<E> listener)
값 필드 또는 참고 RealmObject 필드가 변경되거나 RealmList 필드 자체가 변경되면 트리거되는 변경 리스너를 이 RealmObject에 추가합니다.<E extends RealmModel>
voidaddChangeListener(RealmObjectChangeListener<E> listener)
이 RealmObject에 변경 리스너를 추가하여 변경 사항에 대한 자세한 정보를 가져옵니다.<E extends RealmObject>
Observable<ObjectChange<E>>asChangesetObservable()
이 RealmObject의 변경 사항을 모니터링하는 Rx Observable을 반환합니다.static <E extends RealmModel>
Observable<ObjectChange<E>>asChangesetObservable(E object)
이 RealmObject의 변경 사항을 모니터링하는 Rx Observable을 반환합니다.<E extends RealmObject>
Flowable<E>asFlowable()
이 RealmObject의 변경 사항을 모니터링하는 RxJava Flowable을 반환합니다.static <E extends RealmModel>
Flowable<E>asFlowable(E object)
이 RealmObject의 변경 사항을 모니터링하는 RxJava Flowable을 반환합니다.void
deleteFromRealm()
현재 연결된 Realm에서 객체를 삭제합니다.static <E extends RealmModel>
voiddeleteFromRealm(E object)
현재 연결된 Realm에서 객체를 삭제합니다.<E extends RealmModel>
Efreeze()
이 객체의 동결된 스냅샷을 반환합니다.static <E extends RealmModel>
Efreeze(E object)
이 객체의 동결된 스냅샷을 반환합니다.Realm
getRealm()
Realm
이 가 속한 인스턴스를RealmObject
반환합니다.static Realm
getRealm(RealmModel model)
model
가 속한Realm
인스턴스를 반환합니다.boolean
isFrozen()
이 RealmObject가 동결되었는지 여부를 반환합니다.static <E extends RealmModel>
booleanisFrozen(E object)
이 RealmObject가 동결되었는지 여부를 반환합니다.boolean
isLoaded()
이 RealmObject를 찾는 데 사용된 쿼리가 완료되었는지 확인합니다.static <E extends RealmModel>
booleanisLoaded(E object)
이 RealmObject를 찾는 데 사용된 쿼리가 완료되었는지 확인합니다.boolean
isManaged()
이 객체가 Realm에서 managed 확인합니다.static <E extends RealmModel>
booleanisManaged(E object)
이 객체가 Realm에서 managed 확인합니다.boolean
isValid()
RealmObject가 여전히 사용 가능한지 확인합니다, 즉 RealmObject가 삭제되지 않았거나Realm
이(가) 닫히지 않았는지 확인합니다.static <E extends RealmModel>
booleanisValid(E object)
RealmObject가 여전히 사용 가능한지 확인합니다, 즉 RealmObject가 삭제되지 않았거나Realm
이(가) 닫히지 않았는지 확인합니다.boolean
load()
비동기 쿼리를 차단합니다.static <E extends RealmModel>
booleanload(E object)
비동기 쿼리를 차단합니다.void
removeAllChangeListeners()
등록된 모든 리스너를 제거합니다.static <E extends RealmModel>
voidremoveAllChangeListeners(E object)
지정된 RealmObject에서 등록된 모든 리스너를 제거합니다.static <E extends RealmModel>
voidremoveChangeListener(E object, RealmChangeListener<E> listener)
지정된 RealmObject에 이전에 등록된 리스너를 제거합니다.static <E extends RealmModel>
voidremoveChangeListener(E object, RealmObjectChangeListener listener)
지정된 RealmObject에 이전에 등록된 리스너를 제거합니다.void
removeChangeListener(RealmChangeListener listener)
이전에 등록된 리스너를 제거합니다.void
removeChangeListener(RealmObjectChangeListener listener)
이전에 등록된 리스너를 제거합니다.
-
-
-
메서드 세부 정보
-
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
인스턴스이거나 이 객체가 관리되지 않는 경우null
입니다. - 예외 처리:
IllegalStateException
- 이 객체가DynamicRealmObject
의 인스턴스이거나 객체가 이미 삭제되었거나 해당Realm
가 이미 닫힌 경우
-
getRealm
public static Realm getRealm(RealmModel model)
- 매개변수:
model
- 이외의RealmModel
DynamicRealmObject
인스턴스.- 반환합니다:
Realm
model
null
이 속한 인스턴스이거나model
가 관리되지 않는 경우 입니다.- 예외 처리:
IllegalArgumentException
-model
가null
인 경우.IllegalStateException
-model
이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
-object
가null
또는 관리되지 않는 객체이거나 변경 리스너가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
-object
가null
또는 관리되지 않는 객체이거나 변경 리스너가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 RealmObject> Flowable<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 RealmObject> Observable<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 RealmModel> Flowable<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 RealmModel> Observable<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
-
-