Docs Menu
Docs Home
/ /
Atlas Device SDK
/ / /

클래스 DynamicRealm

이 페이지의 내용

  • io.realm
  • 중첩된 클래스 요약
  • 메서드 요약
  • 상속된 메서드
  • 메서드 세부 정보
  • addChangeListener
  • asFlowable
  • createEmbeddedObject
  • createObject
  • 삭제
  • executionTransaction
  • executionTransactionAsync
  • 동결
  • getInstance
  • getInstanceAsync
  • getSchema
  • isEmpty
  • 모든 변경 리스너 제거
  • removeChangeListener
  • 위치
java.lang.Object
io.realm.BaseRealm
io.realm.DynamicRealm

DynamicRealm은 io.realm.Realm 의 동적 변형입니다. 즉, 데이터 및/또는 쿼리에 대한 모든 액세스가 클래스 유형 참고 대신 문자열 기반 클래스 이름을 사용하여 수행됩니다.

이 기능은 마이그레이션을 하거나 CSV 또는 XML 파일과 같은 문자열 기반 데이터로 작업할 때 유용합니다.

동일한 io.realm.RealmConfiguration 을 사용하여 동적 모드와 입력 모드 모두에서 Realm 파일을 열 수 있지만, 입력 버전과 동적 버전이 모두 열린 상태에서 스키마를 수정하는 것은 적극 권장하지 않으며 입력된 Realm이 충돌할 가능성이 높습니다. During migrations only a DynamicRealm will be open.

동적 Realm은 스키마나 스키마 버전을 적용하지 않으며 RealmMigration 코드가 RealmConfiguration 에 정의되어 있더라도 사용되지 않습니다.

즉, Realm이 유형 모드에서 열릴 때까지 스키마가 생성되거나 유효성이 검사되지 않습니다. Realm 파일을 먼저 동적 모드에서 열면 해당 파일에는 클래스와 필드에 대한 정보가 포함되지 않으며 스키마에 의해 정의된 클래스에 대한 쿼리가 실패합니다.

다음도 참조하세요.

  • Realm

  • Realm 스키마

수정자 및 유형
클래스 및 설명
public static interface
public abstract static
수정자 및 유형
메서드 및 설명
public void

Realm에 변경 리스너를 추가합니다.

public <any>

이 Realm의 변경 사항을 모니터링하는 RxJava Flowable을 반환합니다.

String className,
DynamicRealmObject parentObject,
String parentProperty
)

새로운 내장된 객체를 인스턴스화하고 Realm에 추가합니다.

String className,
Object primaryKeyValue
)

지정된 기본 키를 사용하여 객체를 생성합니다.

String className
)

Realm에 새 객체를 인스턴스화하고 추가합니다.

public void
String className
)

Realm에서 지정된 클래스의 모든 객체를 삭제합니다.

public void

DynamicRealm에서 지정된 트랜잭션을 실행합니다.

executionTransactionAsync (Transaction) 와 유사하지만 OnSuccess 및 OnError 콜백도 허용합니다.

executionTransactionAsync(Transaction) 와 유사하지만 OnError 콜백도 허용합니다.

executionTransactionAsync (Transaction) 과 유사하지만 OnSuccess 콜백 도 허용합니다.

executionTransaction(Transaction)과 유사하지만 작업자 스레드에서 비동기적으로 실행됩니다.

현재 Realm의 동결된 스냅샷을 반환합니다.

공개 정적 DynamicRealm

제공된 io.realm.RealmConfiguration 에 의해 정의된 Realm 인스턴스의 동적 변형을 반환하는 정적 생성자입니다.

public static RealmAsyncTask

프로세스에서 RealmConfiguration 당 첫 Realm 인스턴스를 생성하는 것은 모든 초기화 코드가 해당 점에서 실행되어야 하므로(Realm 설정, 스키마 유효성 검사 및 초기 데이터 생성) 시간이 걸릴 수 있습니다.

이 Realm의 변경 가능한 스키마를 반환합니다.

공개 부울

io.realm.Realm 에 객체가 포함되어 있는지 확인합니다.

public void

모든 사용자 정의 변경 수신기를 제거합니다.

public void

지정된 변경 리스너를 제거합니다.

공개 RealmQuery
String className
)

제공된 클래스를 쿼리하는 데 사용할 수 있는 RealmQuery를 반환합니다.

  • 클래스 java.lang.Object 에서 상속된 메서드 : getClass , hashCode , equals , clone , toString , notify , notifyAll , wait , wait , wait , finalize

  • io.realm.BaseRealm 클래스에서 상속된 메서드: setAutoRefresh , isAutoRefresh , refresh , isInTransaction , addListener , removeListener , asFlowable , removeAllListeners , writeCopyTo , writeEncryptedCopyTo , waitForChange , stopWaitForChange , beginTransaction , commitTransaction , cancelTransaction , freeze , isFrozen , getNumberOfActiveVersions , checkIfValid , checkAllowQueriesOnUiThread , checkAllowWritesOnUiThread , checkIfInTransaction , checkIfValidAndInTransaction , getPath , getConfiguration , getVersion , close , isClosed , isEmpty , getSchema , getSubscriptions , deleteAll , migrateRealm , finalize

Realm에 변경 리스너를 추가합니다. 이 스레드 또는 다른 스레드에서 변경 사항이 커밋될 때 리스너가 실행됩니다.

Realm 인스턴스는 스레드별로 캐시됩니다. 따라서 removeChangeListener(RealmChangeListener) 또는 removeAllChangeListeners() 를 사용하여 리스너를 다시 제거하는 것이 중요합니다. 그렇지 않으면 메모리 누수가 발생할 수 있습니다.

매개변수

  • listener - 변경 리스너입니다.

스로우

public <any> asFlowable ()

이 Realm의 변경 사항을 모니터링하는 RxJava Flowable을 반환합니다. 구독 시 현재 상태를 방출합니다. Realm이 업데이트될 때마다 항목이 계속 방출되며 onComplete 은(는) 호출되지 않습니다.

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

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

realm.asFlowable()
.observeOn(Schedulers.computation())
.map(rxRealm -> doExpensiveWork(rxRealm))
.observeOn(AndroidSchedulers.mainThread())
.subscribe( ... );

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

realm.asFlowable().first().subscribe( ... ); // You only get the results once

반환

onNext 만 호출하는 RxJava Observable입니다. 절대 onComplete 또는 OnError 를 호출하지 않습니다.

재정의

asFlowable BaseRealm클래스 내

String className,
DynamicRealmObject parentObject,
String parentProperty
)

새 내장된 객체를 인스턴스화하고 Realm에 추가합니다. 이 메서드는 내장된 것으로 표시된 유형의 객체를 생성하는 데만 사용해야 합니다.

매개변수

  • className - 생성할 객체의 클래스 이름입니다.

  • parentObject - 내장된 객체에 대한 참고를 보유해야 하는 객체입니다. 상위 속성이 목록인 경우 내장된 객체는 해당 목록의 끝에 추가됩니다.

  • parentProperty - 참고를 보유한 상위 클래스의 속성입니다.

반환

새로 생성된 내장된 객체입니다.

스로우

  • 불법적인 인수 예외 - clazz 이(가) 포함된 클래스가 아니거나 상위 클래스의 속성 이 적절한 유형의 객체를 보유할 수 없는 경우.

다음도 참조하세요.

String className,
Object primaryKeyValue
)

지정된 프라이머리 키를 사용하여 객체를 생성합니다. 기본 키가 정의되지 않은 클래스는 대신 createObject(string) }를 사용해야 합니다.

반환

새 객체. 제공된 값을 가질 기본 키 필드를 제외한 모든 필드는 해당 유형에 대한 기본값을 갖습니다.

스로우

Realm에 새 객체를 인스턴스화하고 추가합니다.

매개변수

  • className - 생성할 객체의 클래스 이름입니다.

반환

새 객체.

스로우

public void delete (
String className
)

Realm에서 지정된 클래스의 모든 객체를 삭제합니다.

매개변수

  • className - 모든 객체를 제거해야 하는 클래스입니다.

스로우

  • 불법적인 상태 예외 - Realm이 닫혔거나 잘못된 스레드에서 호출된 경우

DynamicRealm에서 지정된 트랜잭션을 실행합니다. startTransaction()commitTransaction() 이 자동으로 호출됩니다. 트랜잭션 중에 예외가 발생하면 commitTransaction() 대신 취소 트랜잭션 () 이 호출됩니다.

UI 스레드에서 이 메서드를 호출하면 RealmException 이 발생합니다. 이렇게 하면 프레임 드롭 또는 ANR이 발생할 수 있습니다. UI가 아닌 스레드에서 이 메서드를 호출하거나 대신 executionTransactionAsync(Transaction) 를 사용하는 것이 좋습니다.

매개변수

스로우

executionTransactionAsync (Transaction) 와 유사하지만 OnSuccess 및 OnError 콜백도 허용합니다.

매개변수

  • transaction - 실행할 트랜잭션 입니다.

  • onSuccess - 트랜잭션이 성공하면 호출되는 콜백입니다.

  • onError - 트랜잭션이 실패하면 호출되는 콜백입니다.

반환

취소 가능한 작업을 나타내는 RealmAsyncTask 입니다.

스로우

executionTransactionAsync(Transaction) 와 유사하지만 OnError 콜백도 허용합니다.

매개변수

  • transaction - 실행할 트랜잭션 입니다.

  • onError - 트랜잭션이 실패하면 호출되는 콜백입니다.

반환

취소 가능한 작업을 나타내는 RealmAsyncTask 입니다.

스로우

executionTransactionAsync (Transaction) 과 유사하지만 OnSuccess 콜백 도 허용합니다.

매개변수

  • transaction - 실행할 트랜잭션 입니다.

  • onSuccess - 트랜잭션이 성공하면 호출되는 콜백입니다.

반환

취소 가능한 작업을 나타내는 RealmAsyncTask 입니다.

스로우

executionTransaction(Transaction)과 유사하지만 작업자 스레드에서 비동기적으로 실행됩니다.

매개변수

반환

취소 가능한 작업을 나타내는 RealmAsyncTask 입니다.

스로우

현재 Realm의 동결된 스냅샷을 반환합니다. 이 Realm은 IllegalStateException 을 발생시키지 않고 모든 스레드에서 읽고 쿼리할 수 있습니다. . 동결된 Realm에는 자체 수명 주기가 있으며 close() 를 호출하여 닫을 수 있지만 동결된 복사본을 생성한 Realm을 완전히 닫으면 동결된 Realm도 닫힙니다.

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

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

반환

이 Realm의 동결된 사본입니다.

재정의

freeze BaseRealm클래스 내

public static DynamicRealm getInstance (
RealmConfiguration configuration
)

제공된 io.realm.RealmConfiguration 에 의해 정의된 Realm 인스턴스의 동적 변형을 반환하는 정적 생성자입니다. 동적 Realm은 schemaVersion 및 스키마에는 상관하지 않으므로 DynamicRealm을 열어도 마이그레이션이 trigger되지 않습니다.

반환

구성에 의해 정의된 DynamicRealm입니다.

스로우

프로세스에서 RealmConfiguration 당 첫 Realm 인스턴스를 생성하는 것은 모든 초기화 코드가 해당 점에서 실행되어야 하므로(Realm 설정, 스키마 유효성 검사 및 초기 데이터 생성) 시간이 걸릴 수 있습니다. 이 메서드는 초기화 작업을 백그라운드 스레드에 배치하고 초기화가 완료된 후 Realm 인스턴스를 호출자 스레드에 비동기적으로 전달합니다.

매개변수

  • configuration - Realm을 여는 데 사용되는 RealmConfiguration 입니다.

  • callback - 결과를 반환하기 위해 호출됩니다.

반환

취소 가능한 작업을 나타내는 RealmAsyncTask 입니다.

스로우

이 Realm의 변경 가능한 스키마를 반환합니다.

반환

이 Realm의 RealmSchema 입니다.

재정의

getSchema BaseRealm클래스 내

public boolean isEmpty ()

io.realm.Realm 에 객체가 포함되어 있는지 확인합니다.

반환

true 비어 있으면 @{code false}, 그렇지 않으면 @{code false} .

재정의

isEmpty BaseRealm클래스 내

모든 사용자 정의 변경 수신기를 제거합니다.

스로우

  • 불법적인 상태 예외 - Looper가 아닌 스레드에서 리스너를 제거하려고 하는 경우.

다음도 참조하세요.

지정된 변경 리스너를 제거합니다.

매개변수

  • listener - 제거할 변경 리스너입니다.

스로우

다음도 참조하세요.

public RealmQuery where (
String className
)

제공된 클래스를 쿼리하는 데 사용할 수 있는 RealmQuery를 반환합니다.

매개변수

  • className - 쿼리할 객체의 클래스입니다.

반환

RealmQuery를 사용하여 제공된 유형의 특정 객체를 쿼리할 수 있습니다.

스로우

다음도 참조하세요.

돌아가기

DefaultCompactOnLaunchCallback