클래스 DynamicRealm
- java.lang.Object
-
- io.realm.DynmicRealm
-
- 구현된 모든 인터페이스:
Closeable
,AutoCloseable
public class DynamicRealm extends Object
DynamicRealm은Realm
의 동적 변형입니다. 즉, 데이터 및/또는 쿼리에 대한 모든 액세스가 클래스 유형 참고 대신 문자열 기반 클래스 이름을 사용하여 수행됩니다.이 기능은 마이그레이션을 하거나 CSV 또는 XML 파일과 같은 문자열 기반 데이터로 작업할 때 유용합니다.
동적 모드와 유형 모드 모두에서 Realm 파일을 여는 데 동일한
RealmConfiguration
을 사용할 수 있지만 입력 모드와 동적 버전이 모두 열린 상태에서 스키마를 수정하는 것은 적극 권장하지 않으며 입력된 Realm이 충돌할 가능성이 높습니다. 마이그레이션 중에는 DynamicRealm만 열립니다.동적 Realm은 스키마 또는 스키마 버전을 적용하지 않으며
RealmMigration
코드가RealmConfiguration
에 정의된 경우에도 사용되지 않습니다.즉, Realm이 유형 모드에서 열릴 때까지 스키마가 생성되거나 유효성이 검사되지 않습니다. Realm 파일을 먼저 동적 모드에서 열면 해당 파일에는 클래스와 필드에 대한 정보가 포함되지 않으며 스키마에 의해 정의된 클래스에 대한 쿼리가 실패합니다.
- 다음도 참조하세요.
Realm
,RealmSchema
-
-
중첩된 클래스 요약
중첩된 클래스 수정자 및 유형 클래스 설명 static class
DynamicRealm.Callback
Realm.getInstanceAsync(RealmConfiguration, Realm.Callback)
또는getInstanceAsync(RealmConfiguration, DynamicRealm.Callback)
을 사용하여 Realm을 비동기적으로 로드한 결과를 보고할 때 사용되는 콜백입니다.static interface
DynamicRealm.Transaction
Realm 트랜잭션을 캡슐화합니다.
-
필드 요약
필드 수정자 및 유형 필드 설명 static io.realm.BaseRealm.ThreadLocalRealmObjectContext
objectContext
io.realm.internal.OsSharedRealm
sharedRealm
static io.realm.internal.async.RealmThreadPoolExecutor
WRITE_EXECUTOR
쓰기 작업에 사용되는 스레드 풀 실행기 - 쓰기는 병렬화할 수 없으므로 스레드가 하나만 필요합니다.
-
메서드 요약
모든 메서드 정적 메서드 인스턴스 메서드 구체적인 방법 사용되지 않는 메서드 수정자 및 유형 메서드 설명 void
addChangeListener(RealmChangeListener<DynamicRealm> listener)
Realm에 변경 리스너를 추가합니다.Flowable<DynamicRealm>
asFlowable()
이 Realm의 변경 사항을 모니터링하는 RxJava Flowable을 반환합니다.void
beginTransaction()
BaseRealm.commitTransaction()
에 의해 닫히거나BaseRealm.cancelTransaction()
에 의해 중단되어야 하는 트랜잭션을 시작합니다.void
cancelTransaction()
현재 쓰기 트랜잭션(write transaction)에서 이루어진 모든 쓰기(생성, 업데이트 또는 삭제된 객체)를 되돌리고 트랜잭션을 종료합니다.void
close()
Realm 인스턴스와 인스턴스의 모든 리소스를 닫습니다.void
commitTransaction()
BaseRealm.beginTransaction()
이후의 모든 변경 사항은 디스크에 유지되며 Realm은 읽기 전용으로 되돌아갑니다.DynamicRealmObject
createEmbeddedObject(String className, DynamicRealmObject parentObject, String parentProperty)
새로운 내장된 객체를 인스턴스화하고 Realm에 추가합니다.DynamicRealmObject
createObject(String className)
Realm에 새 객체를 인스턴스화하고 추가합니다.DynamicRealmObject
createObject(String className, Object primaryKeyValue)
지정된 기본 키를 사용하여 객체를 생성합니다.void
delete(String className)
Realm에서 지정된 클래스의 모든 객체를 삭제합니다.void
deleteAll()
이 Realm에서 모든 객체를 삭제합니다.void
executeTransaction(DynamicRealm.Transaction transaction)
DynamicRealm에서 지정된 트랜잭션을 실행합니다.RealmAsyncTask
executeTransactionAsync(DynamicRealm.Transaction transaction)
executeTransaction(Transaction)
와(과) 비슷하지만 작업자 스레드에서 비동기적으로 실행됩니다.RealmAsyncTask
executeTransactionAsync(DynamicRealm.Transaction transaction, DynamicRealm.Transaction.OnError onError)
executeTransactionAsync(Transaction)
과 비슷하지만 OnError 콜백도 허용합니다.RealmAsyncTask
executeTransactionAsync(DynamicRealm.Transaction transaction, DynamicRealm.Transaction.OnSuccess onSuccess)
executeTransactionAsync(Transaction)
과 비슷하지만 OnSuccess 콜백도 허용합니다.RealmAsyncTask
executeTransactionAsync(DynamicRealm.Transaction transaction, DynamicRealm.Transaction.OnSuccess onSuccess, DynamicRealm.Transaction.OnError onError)
executeTransactionAsync(Transaction)
과 비슷하지만 OnSuccess 및 OnError 콜백도 허용합니다.DynamicRealm
freeze()
현재 Realm의 동결된 스냅샷을 반환합니다.RealmConfiguration
getConfiguration()
이 Realm의RealmConfiguration
을 반환합니다.static DynamicRealm
getInstance(RealmConfiguration configuration)
제공된RealmConfiguration
에 의해 정의된 Realm 인스턴스의 동적 변형을 반환하는 Realm 정적 생성자입니다.static RealmAsyncTask
getInstanceAsync(RealmConfiguration configuration, DynamicRealm.Callback callback)
프로세스에서RealmConfiguration
당 첫 번째 Realm 인스턴스를 생성하는 것은 모든 초기화 코드를 해당 점에서 실행해야 하므로(Realm 설정, 스키마 유효성 검사 및 초기 데이터 생성) 시간이 걸릴 수 있습니다.long
getNumberOfActiveVersions()
이 Realm에서 현재 보유하고 있는 활성 버전의 현재 수를 반환합니다.String
getPath()
이 Realm이 디스크에서 유지되는 표준 경로를 반환합니다.RealmSchema
getSchema()
이 Realm의 변경 가능한 스키마를 반환합니다.SubscriptionSet
getSubscriptions()
이 Realm과 연결된 구독 세트를 반환합니다.long
getVersion()
이 Realm의 스키마 버전을 반환합니다.boolean
isAutoRefresh()
Realm 인스턴스의 자동 새로 고침 상태를 검색합니다.boolean
isClosed()
Realm
인스턴스가 이미 닫혔는지 확인합니다.boolean
isEmpty()
이Realm
에 객체가 포함되어 있는지 확인합니다.boolean
isFrozen()
이 Realm이 동결되었는지 여부를 반환합니다.boolean
isInTransaction()
Realm이 현재 트랜잭션 중에 있는지 확인합니다.void
refresh()
Realm 인스턴스와 해당 인스턴스에서 오는 모든 RealmResults 및 RealmObjects 인스턴스를 새로 고칩니다.void
removeAllChangeListeners()
모든 사용자 정의 변경 수신기를 제거합니다.void
removeChangeListener(RealmChangeListener<DynamicRealm> listener)
지정된 변경 리스너를 제거합니다.void
setAutoRefresh(boolean autoRefresh)
Realm 인스턴스의 자동 새로 고침 상태를 설정합니다.void
stopWaitForChange()
더 이상 사용되지 않습니다.이 메서드는 다음 주요 릴리스에서 제거될 예정입니다.boolean
waitForChange()
더 이상 사용되지 않습니다.이 메서드는 다음 주요 릴리스에서 제거될 예정입니다.RealmQuery<DynamicRealmObject>
where(String className)
제공된 클래스를 쿼리하는 데 사용할 수 있는 RealmQuery를 반환합니다.void
writeCopyTo(File destination)
Realm의 압축된 복사본을 지정된 대상 파일에 씁니다.void
writeEncryptedCopyTo(File destination, byte[] key)
Realm의 압축되고 암호화된 복사본을 지정된 대상 파일에 씁니다.
-
-
-
필드 세부 정보
-
WRITE_EXECUTOR
public static final io.realm.internal.async.RealmThreadPoolExecutor WRITE_EXECUTOR
쓰기 작업에 사용되는 스레드 풀 실행기 - 쓰기는 병렬화할 수 없으므로 스레드가 하나만 필요합니다.
-
SharedRealm
public io.realm.internal.OsSharedRealm sharedRealm
-
objectContext
public static final io.realm.BaseRealm.ThreadLocalRealmObjectContext objectContext
-
-
메서드 세부 정보
-
getInstance
public static DynamicRealm getInstance(RealmConfiguration configuration)
제공된RealmConfiguration
에 의해 정의된 Realm 인스턴스의 동적 변형을 반환하는 Realm 정적 생성자입니다. 동적 Realm은 schemaVersion 및 스키마에는 상관하지 않으므로 DynamicRealm을 열어도 마이그레이션이 trigger되지 않습니다.- 반환합니다:
- 구성에 의해 정의된 DynamicRealm입니다.
- 예외 처리:
RealmFileException
- 기본 Realm 파일에 액세스할 때 오류가 발생한 경우.IllegalArgumentException
-configuration
인수가null
인 경우- 다음도 참조하세요.
for details on how to configure a Realm.
-
getInstanceAsync
public static RealmAsyncTask getInstanceAsync(RealmConfiguration configuration, DynamicRealm.Callback callback)
프로세스에서RealmConfiguration
당 첫 번째 Realm 인스턴스를 생성하는 것은 모든 초기화 코드를 해당 점에서 실행해야 하므로(Realm 설정, 스키마 유효성 검사 및 초기 데이터 생성) 시간이 걸릴 수 있습니다. 이 메서드는 초기화 작업을 백그라운드 스레드에 배치하고 초기화가 완료된 후 Realm 인스턴스를 호출자 스레드에 비동기적으로 전달합니다.- 매개변수:
configuration
-RealmConfiguration
Realm을 여는 데 사용됩니다.callback
- 결과를 반환하기 위해 호출됩니다.- 반환합니다:
- 취소 가능한 작업을 나타내는
RealmAsyncTask
입니다. - 예외 처리:
IllegalArgumentException
- nullRealmConfiguration
또는 nullDynamicRealm.Callback
가 제공된 경우.IllegalStateException
- 이벤트 루프가 아닌 또는IntentService
스레드에서 호출된 경우.- 다음도 참조하세요.
for more details.
-
createObject
public DynamicRealmObject createObject(String className)
Realm에 새 객체를 인스턴스화하고 추가합니다.- 매개변수:
className
- 생성할 객체의 클래스 이름입니다.- 반환합니다:
- 새 객체.
- 예외 처리:
RealmException
- 객체를 생성할 수 없는 경우.
-
createObject
public DynamicRealmObject createObject(String className, 객체 PrimaryKeyValue)
지정된 기본 키를 사용하여 객체를 생성합니다. 기본 키가 정의되지 않은 클래스는 대신createObject(String)
}을(를) 사용해야 합니다.- 반환합니다:
- 새 객체. 제공된 값을 가질 기본 키 필드를 제외한 모든 필드는 해당 유형에 대한 기본값을 갖습니다.
- 예외 처리:
RealmException
- 기본 키가 유효하지 않아 객체를 생성할 수 없는 경우입니다.IllegalStateException
- 모델 클래즈에 기본 키가 정의되어 있지 않은 경우.IllegalArgumentException
-primaryKeyValue
에 예상 값으로 변환할 수 있는 값이 없는 경우.
-
createEmbeddedObject
public DynamicRealmObject createEmbeddedObject(문자열 className, DynamicRealmObjectparentObject , 문자열 parentProperty)
새로운 내장된 객체를 인스턴스화하고 Realm에 추가합니다.이 메서드는 포함된 것으로 표시된 유형의 객체를 생성하는 데만 사용해야 합니다.
- 매개변수:
className
- 생성할 객체의 클래스 이름입니다.parentObject
- 내장된 객체에 대한 참고를 보유해야 하는 객체입니다. 상위 속성이 목록인 경우 내장된 객체는 해당 목록의 끝에 추가됩니다.parentProperty
- 참고를 보유한 상위 클래스의 속성입니다.- 반환합니다:
- 새로 생성된 내장된 객체입니다.
- 예외 처리:
IllegalArgumentException
-clazz
이(가) 포함된 클래스가 아니거나 상위 클래스의 속성이 적절한 유형의 객체를 보유할 수 없는 경우- 다음도 참조하세요.
RealmClass.embedded()
-
위치
public RealmQuery<DynamicRealmObject> where(String className)
제공된 클래스를 쿼리하는 데 사용할 수 있는 RealmQuery를 반환합니다.- 매개변수:
className
- 쿼리할 객체의 클래스입니다.- 반환합니다:
- RealmQuery를 사용하여 제공된 유형의 특정 객체를 쿼리할 수 있습니다.
- 예외 처리:
IllegalArgumentException
- 클래스가 존재하지 않는 경우.- 다음도 참조하세요.
RealmQuery
-
addChangeListener
public void addChangeListener(RealmChangeListener<DynamicRealm> listener)
Realm에 변경 리스너를 추가합니다.이 스레드 또는 다른 스레드에서 변경 사항이 커밋될 때 리스너가 실행됩니다.
Realm 인스턴스는 스레드별로 캐시됩니다. 따라서
removeChangeListener(RealmChangeListener)
또는removeAllChangeListeners()
을 사용하여 리스너를 다시 제거하는 것이 중요합니다. 그렇지 않으면 메모리 누수가 발생할 수 있습니다.- 매개변수:
listener
- 변경 리스너입니다.- 예외 처리:
IllegalArgumentException
- 변경 리스너가null
인 경우- 다음도 참조하세요.
RealmChangeListener
,removeChangeListener(RealmChangeListener)
,removeAllChangeListeners()
,refresh()
-
removeChangeListener
public void removeChangeListener(RealmChangeListener<DynamicRealm> listener)
지정된 변경 리스너를 제거합니다.- 매개변수:
listener
- 제거할 변경 리스너입니다.- 예외 처리:
IllegalArgumentException
- 변경 리스너가null
인 경우IllegalStateException
- 이벤트 루프가 아닌 스레드에서 리스너를 제거하려고 하는 경우.- 다음도 참조하세요.
RealmChangeListener
-
모든 변경 리스너 제거
public void removeAllChangeListeners()
모든 사용자 정의 변경 수신기를 제거합니다.- 예외 처리:
IllegalStateException
- 이벤트 루프가 아닌 스레드에서 리스너를 제거하려고 하는 경우.- 다음도 참조하세요.
RealmChangeListener
-
삭제
public void delete(String className)
Realm에서 지정된 클래스의 모든 객체를 삭제합니다.- 매개변수:
className
- 모든 객체를 제거해야 하는 클래스입니다.- 예외 처리:
IllegalStateException
- Realm이 닫히거나 잘못된 스레드에서 호출된 경우
-
executionTransaction
public void executeTransaction(DynamicRealm.Transaction transaction)
DynamicRealm에서 지정된 트랜잭션을 실행합니다.beginTransaction()
및commitTransaction()
이 자동으로 호출됩니다. 트랜잭션 중에 예외가cancelTransaction()
발생하면 대신 가commitTransaction()
호출됩니다.UI 스레드에서 이 메서드를 호출하면
RealmException
이(가) 발생합니다. 이로 인해 프레임이 저하되거나 ANR이 발생할 수도 있습니다. UI가 아닌 스레드에서 이 메서드를 호출하거나 대신executeTransactionAsync(Transaction)
를 사용하는 것이 좋습니다.- 매개변수:
transaction
-DynamicRealm.Transaction
을(를) 실행합니다.- 예외 처리:
IllegalArgumentException
-transaction
가null
인 경우.RealmException
-RealmConfiguration.Builder.allowWritesOnUiThread(boolean)
에서 명시적인 옵트인이 선언되지 않은 경우를 제외하고 UI 스레드에서 호출한 경우
-
executionTransactionAsync
public RealmAsyncTask runTransactionAsync (DynamicRealm.Transaction transaction)
executeTransaction(Transaction)
와(과) 비슷하지만 작업자 스레드에서 비동기적으로 실행됩니다.- 매개변수:
transaction
-DynamicRealm.Transaction
을(를) 실행합니다.- 반환합니다:
- 취소 가능한 작업을 나타내는
RealmAsyncTask
입니다. - 예외 처리:
IllegalArgumentException
-transaction
가null
이거나 Realm이 다른 스레드에서 열린 경우.
-
executionTransactionAsync
public RealmAsyncTask run트랜잭션Async (DynamicRealm.트랜잭션 트랜잭션, DynamicRealm.트랜잭션.OnSuccess onSuccess)
executeTransactionAsync(Transaction)
과 비슷하지만 OnSuccess 콜백도 허용합니다.- 매개변수:
transaction
-DynamicRealm.Transaction
을(를) 실행합니다.onSuccess
- 트랜잭션이 성공하면 호출되는 콜백입니다.- 반환합니다:
- 취소 가능한 작업을 나타내는
RealmAsyncTask
입니다. - 예외 처리:
IllegalArgumentException
-transaction
가null
이거나 영역이 다른 스레드에서 열린 경우.
-
executionTransactionAsync
public RealmAsyncTask run트랜잭션Async (DynamicRealm.트랜잭션 트랜잭션, DynamicRealm.트랜잭션.OnError onError)
executeTransactionAsync(Transaction)
과 비슷하지만 OnError 콜백도 허용합니다.- 매개변수:
transaction
-DynamicRealm.Transaction
을(를) 실행합니다.onError
- 트랜잭션이 실패하면 호출되는 콜백입니다.- 반환합니다:
- 취소 가능한 작업을 나타내는
RealmAsyncTask
입니다. - 예외 처리:
IllegalArgumentException
-transaction
가null
이거나 영역이 다른 스레드에서 열린 경우.
-
executionTransactionAsync
public RealmAsyncTask run트랜잭션Async (DynamicRealm.트랜잭션 트랜잭션, @Nullable DynamicRealm.트랜잭션.OnSuccess onSuccess, @Nullable DynamicRealm.트랜잭션.OnError onError)
executeTransactionAsync(Transaction)
과 비슷하지만 OnSuccess 및 OnError 콜백도 허용합니다.- 매개변수:
transaction
-DynamicRealm.Transaction
을(를) 실행합니다.onSuccess
- 트랜잭션이 성공하면 호출되는 콜백입니다.onError
- 트랜잭션이 실패하면 호출되는 콜백입니다.- 반환합니다:
- 취소 가능한 작업을 나타내는
RealmAsyncTask
입니다. - 예외 처리:
IllegalArgumentException
-transaction
가null
이거나 영역이 다른 스레드에서 열린 경우.
-
asFlowable
public Flowable<DynamicRealm> 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
를 호출하지 않습니다.- 다음도 참조하세요.
- RxJava 및 Realm
-
isEmpty
공개 부울 isEmpty()
이Realm
에 객체가 포함되어 있는지 확인합니다.- 반환합니다:
true
비어 있으면 @{code false}, 그렇지 않으면 @{code false} .
-
getSchema
public RealmSchema getSchema()
이 Realm의 변경 가능한 스키마를 반환합니다.- 반환합니다:
- 이 Realm의
RealmSchema
입니다.
-
동결
public DynamicRealm 동결()
현재 Realm의 동결된 스냅샷을 반환합니다. 이 Realm은IllegalStateException
발생 없이 모든 스레드에서 읽고 쿼리할 수 있습니다. 동결된 Realm에는 자체 수명 주기가 있으며Closeable.close()
호출하여 닫을 수 있지만 동결된 사본을 생성한 Realm을 완전히 닫으면 동결된 Realm도 닫힙니다.동결된 데이터는 정상적으로 쿼리할 수 있지만 어떤 방식으로든 데이터를 변경하려고 하거나 리스너를 등록하려고 하면
IllegalStateException
이(가) 발생합니다.참고: 버전이 다른 많은 수의 Realm을 활성 상태로 유지하면 Realm의 파일 크기에 부정적인 영향을 미칠 수 있습니다. 이러한 상황을 방지하기 위해
RealmConfiguration.Builder.maxNumberOfActiveVersions(long)
을 설정할 수 있습니다.- 반환합니다:
- 이 Realm의 동결된 사본입니다.
-
setAutoRefresh
public void setAutoRefresh(boolean autoRefresh)
Realm 인스턴스의 자동 새로 고침 상태를 설정합니다.자동 새로 고침은 다른 스레드에서 동일한 파일에서 작동하는 Realm에서 커밋이 수행될 때 현재 Realm 인스턴스와 모든 파생 객체(RealmResults 및 RealmObject 인스턴스)를 자동으로 업데이트할 수 있는 기능입니다. 이 기능은 Realm 인스턴스가
Looper
활성화된 스레드에 있는 경우에만 사용할 수 있습니다.- 매개변수:
autoRefresh
-true
은 자동 새로 고침을 켜고false
은 끕니다.- 예외 처리:
IllegalStateException
- 이벤트 루프가 아닌 스레드에서 호출된 경우.
-
isAutoRefresh
공개 부울 isAutoRefresh()
Realm 인스턴스의 자동 새로 고침 상태를 검색합니다.- 반환합니다:
- 자동 새로 고침 상태.
-
새로 고침
public void refresh()
Realm 인스턴스와 해당 인스턴스에서 오는 모든 RealmResults 및 RealmObjects 인스턴스를 새로 고칩니다. 또한 필요한 경우 Realm과 연결된 모든 리스너를 호출합니다.경고: 비동기 쿼리가 있는 스레드에서 이 메서드를 호출하면 해당 쿼리가 동기 쿼리로 바뀝니다. 즉, 을 와 함께 사용하여 Realm 인스턴스를 얻은 경우 이 메서드는
RealmException
RealmConfiguration.Builder.allowQueriesOnUiThread(boolean)
을 발생시킵니다.true
대부분의 경우 이 방법을 사용하는 것보다 주어진 스레드에서 Realm의 변경 사항에 대한 알림을 받으려면RealmChangeListener
을 사용하는 것이 좋습니다.- 예외 처리:
IllegalStateException
- 트랜잭션 내에서 새로고침을 시도하는 경우.RealmException
-RealmConfiguration.Builder.allowQueriesOnUiThread(boolean)
를 통해 옵트아웃한 후 UI 스레드에서 호출한 경우
-
isInTransaction
공개 부울 isInTransaction()
Realm이 현재 트랜잭션 중에 있는지 확인합니다.- 반환합니다:
true
트랜잭션 내에 있으면false
를 반환합니다.
-
writeCopyTo
public void writeCopyTo(File destination)
Realm의 압축된 복사본을 지정된 대상 파일에 씁니다. 결과 파일은 다른 장치에서 로컬 또는 동기화된 Realm을 부트스트랩하기 위한 초기 데이터 세트로 사용할 수 있습니다.대상 파일이 이미 존재할 수 없습니다.
트랜잭션 내에서 호출하면 마지막 트랜잭션이 커밋될 때의 데이터가 아니라 현재 데이터를 기록합니다.
- 매개변수:
destination
- Realm을 저장할 파일입니다.- 예외 처리:
IllegalArgumentException
- 대상 인수가 null인 경우.RealmFileException
- 기본 Realm 파일에 액세스하거나 대상 파일에 쓸 때 오류가 발생한 경우IllegalStateException
- UI 스레드에서 호출된 경우.IllegalStateException
- 모든 클라이언트 변경 사항이 서버에 통합되지 않은 경우.
-
writeEncryptedCopyTo
public void writeEncryptedCopyTo(File destination, byte[] key)
Realm의 압축되고 암호화된 복사본을 지정된 대상 파일에 씁니다. 결과 파일은 다른 장치에서 로컬 또는 동기화된 Realm을 부트스트랩하기 위한 초기 데이터 세트로 사용할 수 있습니다.대상 파일이 이미 존재할 수 없습니다.
트랜잭션 내에서 호출하면 마지막 트랜잭션이 커밋될 때의 데이터가 아니라 현재 데이터를 기록합니다.
- 매개변수:
destination
- Realm을 저장할 파일입니다.key
- 64바이트 암호화 키.- 예외 처리:
IllegalArgumentException
- 대상 인수가 null인 경우.RealmFileException
- 기본 Realm 파일에 액세스하거나 대상 파일에 쓸 때 오류가 발생한 경우IllegalStateException
- UI 스레드에서 호출된 경우.IllegalStateException
- 모든 클라이언트 변경 사항이 서버에 통합되지 않은 경우.
-
waitForChange
@Deprecated 공개 부울 waitForChange()
더 이상 사용되지 않습니다.이 메서드는 다음 주요 릴리스에서 제거될 예정입니다.Blocks the current thread until new changes to the Realm are available orstopWaitForChange()
is called from another thread. stopWaitForChange가 호출되면 이후의 이 메서드에 대한 모든 호출은 즉시 false를 반환합니다.- 반환합니다:
true
Realm이 최신 버전으로 업데이트된 경우false
,stopWaitForChange를 호출하여 취소된 경우.- 예외 처리:
IllegalStateException
- 트랜잭션 내에서 또는 루퍼 스레드에서 호출하는 경우.RealmMigrationNeededException
- 최신 버전에 호환되지 않는 스키마 변경이 포함된 경우Realm
를 입력합니다.
-
stopWaitForChange
@Deprecated public void stopWaitForChange()
더 이상 사용되지 않습니다.이 메서드는 다음 주요 릴리스에서 제거될 예정입니다.현재waitForChange()
가false
을 즉시 반환하도록 합니다. 이 함수가 호출되면 이후의 모든 waitForChange 호출은 즉시false
을 반환합니다.이 메서드는 스레드로부터 안전하며 이 메서드는 waitForChange를 호출한 스레드가 아닌 다른 스레드에서만 호출해야 합니다.
- 예외 처리:
IllegalStateException
-Realm
인스턴스가 이미 닫힌 경우.
-
startTransaction
public void beginTransaction()
BaseRealm.commitTransaction()
에 의해 닫히거나BaseRealm.cancelTransaction()
에 의해 중단되어야 하는 트랜잭션을 시작합니다. 트랜잭션은 Realm 내에서 객체를 원자적으로 생성, 업데이트 및 삭제하는 데 사용됩니다.트랜잭션을 시작하기 전에 Realm 인스턴스는 다른 스레드의 모든 변경 사항을 포함하기 위해 최신 버전으로 업데이트됩니다. 이 업데이트는 등록된
RealmChangeListener
을(를) trigger하지 않습니다.따라서 트랜잭션 내부에서 수정해야 하는 항목을 쿼리하는 것이 좋습니다. 그렇지 않으면 트랜잭션이 시작될 때 일부 결과가 삭제되거나 수정될 위험이 있습니다.
// Don't do this RealmResults<Person> persons = realm.where(Person.class).findAll(); realm.beginTransaction(); persons.first().setName("John"); realm.commitTransaction(); // Do this instead realm.beginTransaction(); RealmResults<Person> persons = realm.where(Person.class).findAll(); persons.first().setName("John"); realm.commitTransaction();
참고: 트랜잭션을 중첩하는 것은 불가능합니다. 트랜잭션 내에서 트랜잭션을 시작하면 예외가 발생합니다.
- 예외 처리:
RealmMigrationNeededException
- 최신 버전에 호환되지 않는 스키마 변경이 포함된 경우Realm
를 입력합니다.
-
commitTransaction()
public void commitTransaction()
BaseRealm.beginTransaction()
이후의 모든 변경 사항은 디스크에 유지되며 Realm은 읽기 전용으로 되돌아갑니다. 다른 모든 Realm 인스턴스에 변경 사항이 발생했음을 알리기 위해 이벤트가 전송됩니다. 이벤트가 수신되면 다른 Realm은 해당 객체와RealmResults
을(를) 업데이트하여 이 커밋의 변경 사항을 반영합니다.
-
취소 트랜잭션
public void cancelTransaction()
현재 쓰기 트랜잭션(write transaction)에서 이루어진 모든 쓰기(생성, 업데이트 또는 삭제된 객체)를 되돌리고 트랜잭션을 종료합니다.Realm이 읽기 전용으로 돌아갑니다.
트랜잭션 중이 아닐 때 이 함수를 호출하면 예외가 발생합니다.
-
IsFrozen
공개 부울 isFrozen()
이 Realm이 동결되었는지 여부를 반환합니다.- 반환합니다:
true
Realm이 동결된 경우false
을 반환합니다.- 다음도 참조하세요.
freeze()
-
getNumberOfActiveVersions
public long getNumberOfActiveVersions()
이 Realm에서 현재 보유하고 있는 활성 버전의 현재 수를 반환합니다.활성 버전이 많으면 Realm 파일의 크기에 부정적인 영향을 미칩니다. 자세한 내용 은 FAQ 를 참조하세요.
- 반환합니다:
- 현재 Realm에서 보유 중인 활성 버전의 수입니다.
- 다음도 참조하세요.
RealmConfiguration.Builder.maxNumberOfActiveVersions(long)
-
getPath
public String getPath()
이 Realm이 디스크에서 유지되는 표준 경로를 반환합니다.- 반환합니다:
- Realm 파일의 표준 경로입니다.
- 다음도 참조하세요.
File.getCanonicalPath()
-
getConfiguration
public RealmConfiguration getConfiguration()
이 Realm의RealmConfiguration
을 반환합니다.- 반환합니다:
- 이 Realm의
RealmConfiguration
입니다.
-
getVersion
public long getVersion()
이 Realm의 스키마 버전을 반환합니다.- 반환합니다:
- 이 Realm을 지원하는 Realm 파일의 스키마 버전입니다.
-
닫기
public void close()
Realm 인스턴스와 인스턴스의 모든 리소스를 닫습니다.메모리, 파일 디스크립터가 유출되거나 Realm 파일의 크기가 측정 이상으로 커지지 않도록 작업을 완료한 후에는 Realm 인스턴스를 닫는 것을 항상 기억하는 것이 중요합니다.
- 다음에 의해 지정됩니다:
close
인터페이스에서AutoCloseable
- 다음에 의해 지정됩니다:
close
인터페이스에서Closeable
- 예외 처리:
IllegalStateException
- 다른 스레드에서 닫으려고 하는 경우.
-
isClosed
public 부울 isClosed()
Realm
인스턴스가 이미 닫혔는지 확인합니다.- 반환합니다:
true
닫히면false
, 그렇지 않으면 .- 예외 처리:
IllegalStateException
- 다른 스레드에서 닫으려고 하는 경우.
-
getSubscriptions
public SubscriptionSet getSubscriptions()
이 Realm과 연결된 구독 세트를 반환합니다. 구독 세트는 이 영역과 서버 간에 동기화되는 데이터를 정의하는 쿼리 세트를 정의합니다.이 방법은 flexible sync를 사용하는 동기화된 영역에만 적용할 수 있습니다.
- 반환합니다:
- 이 영역과 연결된 구독 세트입니다.
- 예외 처리:
IllegalStateException
- 이 영역이 로컬 영역 또는 파티션 기반 동기화 영역인 경우
-
deleteAll
public void deleteAll()
이 Realm에서 모든 객체를 삭제합니다.- 예외 처리:
IllegalStateException
- Realm이 닫히거나 잘못된 스레드에서 호출된 경우
-
-