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

클래스 Realm

이 페이지의 내용

  • io.realm
  • 중첩된 클래스 요약
  • 필드 요약
  • 메서드 요약
  • 상속된 메서드
  • 필드 세부 정보
  • DEFAULT_REALM_NAME
  • ENCRYPTION_KEY_LENGTH
  • 메서드 세부 정보
  • addChangeListener
  • asFlowable
  • compactRealm
  • copyFromRealm
  • copyToRealm
  • copyToRealmOrUpdate
  • createAllFromJson
  • createEmbeddedObject
  • createObject
  • createObjectFromJson
  • createOrUpdateAllFromJson
  • createOrUpdateObjectFromJson
  • 삭제
  • deleteRealm
  • executionTransaction
  • executionTransactionAsync
  • 동결
  • getApplicationContext
  • getDefaultConfiguration
  • getDefaultInstance
  • getDefaultModule
  • getGlobalInstanceCount
  • getInstance
  • getInstanceAsync
  • getLocalInstanceCount
  • getSchema
  • init
  • insert
  • insertOrUpdate
  • isEmpty
  • migrateRealm
  • 모든 변경 리스너 제거
  • removeChangeListener
  • removeDefaultConfiguration
  • setDefaultConfiguration
  • 위치
java.lang.Object
io.realm.BaseRealm
io.realm.Realm

Realm 클래스는 객체 영구 저장소의 저장 및 트랜잭션 관리자입니다. RealmObject의 인스턴스 생성을 담당합니다. Realm 내의 객체는 언제든지 쿼리하고 읽을 수 있습니다. 객체 생성, 수정 및 삭제는 트랜잭션 내부에서 수행되어야 합니다. 자세한 내용은 executionTransaction(Transaction)을참조하세요.

트랜잭션은 여러 스레드의 여러 인스턴스가 전체 ACID를 보장하는 일관된 상태로 동일한 객체에 액세스할 수 있도록 보장합니다.

Realm 인스턴스로 작업을 완료한 후에는 close() 메서드를 호출해야 한다는 점을 기억합니다. 그렇지 않으면 java.lang.OutOfMemoryError 가 발생할 수 있습니다. 네이티브 리소스를 해제할 수 없기 때문입니다.

Realm 인스턴스는 서로 다른 스레드에서 사용할 수 없습니다. 즉, Realm 을 사용하려는 각 스레드에서 인스턴스 를 열어야 합니다. Realm 인스턴스는 참조 카운팅을 사용하여 스레드별로 자동으로 캐시되므로 참조 횟수가 0에 도달하지 않는 한 getInstance(RealmConfiguration) 를 호출하면 캐시된 Realm 이 반환되므로 경량 작업으로 간주해야 합니다.

UI 스레드의 경우 이는 Realm을 열고 닫을 때 onCreate/onDestory 또는 onStart/onStop에서 발생해야 함을 의미합니다.

Realm 인스턴스는 android.os.Handler 를 사용하여 스레드 전반에서 상태를 조정합니다. 메커니즘. 이는 또한 Android.os.Looper 가 없는 스레드의 Realm 인스턴스가 refresh() 를 수동으로 호출하지 않으면 업데이트를 받을 수 없습니다.

Android 활동에서 Realm을 사용하기 위한 표준 패턴은 아래에서 확인할 수 있습니다.

public class RealmApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// The Realm file will be located in package's "files" directory.
RealmConfiguration realmConfig = new RealmConfiguration.Builder(this).build();
Realm.setDefaultConfiguration(realmConfig);
}
}
public class RealmActivity extends Activity {
private Realm realm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
realm = Realm.getDefaultInstance();
}
@Override
protected void onDestroy() {
super.onDestroy();
realm.close();
}
}

Realm은 문자열 및 최대 16MB를 포함하는 바이트 필드를 지원합니다.

다음도 참조하세요.

  • ACID

  • Realm 사용 예제

수정자 및 유형
클래스 및 설명
public static interface
public abstract static
수정자 및 유형
필드 및 설명
public static final String
public static final int

ENCRYPTION_KEY_LENGTH

Realm 데이터를 암호화하는 데 사용되는 암호화 키의 필수 길이입니다.

수정자 및 유형
메서드 및 설명
public void

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

public <any>

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

public static boolean

Realm 파일을 압축합니다.

public E
E realmObject,
int maxDepth
)

이미 저장된 RealmObject 의 관리되지 않는 메모리 내 복사본을 만듭니다.

public E
E realmObject
)

이미 저장된 RealmObject 의 관리되지 않는 메모리 내 복사본을 만듭니다.

공개 목록
java.lang.Iterable<E> realmObjects,
int maxDepth
)

이미 저장된 RealmObject의 관리되지 않는 메모리 내 복사본을 만듭니다.

공개 목록

이미 저장된 RealmObject의 관리되지 않는 메모리 내 복사본을 만듭니다.

공개 목록

RealmObjects의 collection을 Realm 인스턴스에 복사하고 해당 복사본을 반환합니다.

public E
E object,
)

RealmObject를 Realm 인스턴스에 복사하고 복사본을 반환합니다.

공개 목록

io.realm.annotations.PrimaryKey 로 식별되는 기존 RealmObjects 목록을 업데이트하거나 기존 객체를 찾을 수 없는 경우 새 복사본을 만듭니다.

public E

동일한 io.realm.annotations.PrimaryKey 로 식별되는 기존 RealmObject를 업데이트하거나 기존 객체를 찾을 수 없는 경우 새 복사본을 만듭니다.

public void
JSONArray json
)

JSON 배열의 각 객체에 대한 Realm 객체를 만듭니다.

public E
RealmModel parentObject,
String parentProperty
)

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

public E
Object primaryKeyValue
)

이미 설정된 기본 키 값으로 Realm에 새 객체를 인스턴스화하고 추가합니다.

public E

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

public E
JSONObject json
)

JSON 객체의 데이터로 미리 채워진 Realm 객체를 만듭니다.

public void

프라이머리 키로 식별되는 기존 객체 목록을 새 JSON 데이터로 업데이트하려고 시도합니다.

public E

기본 키로 정의된 기존 객체를 새 JSON 데이터로 업데이트하려고 시도합니다.

public void

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

public static boolean

파일 시스템에서 주어진 RealmConfiguration 에 지정된 관련 임시 파일과 함께 Realm 파일을 삭제합니다.

public void

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

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

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

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

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

공개 Realm

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

public static Context

Realm.init(Context) 또는 Realm.init(Context, string) 을 사용하여 을 초기화할 때 사용되는 애플리케이션 컨텍스트를 가져옵니다.Realm

public static RealmConfiguration

getDefaultInstance() 에 대한 기본값 구성을 반환합니다.

public static Realm

setDefaultConfiguration(RealmConfiguration) 에 의해 설정된 io.realm.RealmConfiguration 에 의해 정의된 Realm 인스턴스를 반환하는 Realm 정적 생성자

기본 Realm 모듈을 반환합니다.

public static int

이 구성을 사용하는 현재 프로세스의 모든 스레드에서 열려 있는 Realm 인스턴스의 현재 수를 반환합니다.

public static Realm

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

public static RealmAsyncTask

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

public static int

이 메서드를 호출하는 스레드에서 열려 있는 Realm 인스턴스의 현재 수를 반환합니다.

이 Realm의 스키마를 반환합니다.

public static synchronized void
Context context,
String userAgent
)

Realm 라이브러리를 초기화하고 사용할 준비가 된 기본 구성을 생성합니다.

public static synchronized void
Context context
)

Realm 라이브러리를 초기화하고 사용할 준비가 된 기본 구성을 생성합니다.

public void

관리되지 않는 RealmObject를 삽입합니다.

public void

관리되지 않는 RealmObject의 목록을 삽입합니다.

public void

관리되지 않는 RealmObject를 삽입하거나 업데이트합니다.

public void

관리되지 않는 RealmObject 목록을 삽입하거나 업데이트합니다.

공개 부울

io. 영역. Realm 에는 모든 객체가 포함되어 있습니다.

public static void

RealmMigration에서 마이그레이션을 수동으로 Atlas Triggers합니다.

public static void

지정된 RealmConfiguration과 관련된 마이그레이션을 수동으로 Atlas Triggers합니다.

public void

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

public void

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

public static void

현재 기본 구성을 제거합니다(있는 경우).

public static void
공개 RealmQuery

이 유형의 특정 객체를 쿼리하는 데 사용할 수 있는 유형이 지정된 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에 변경 리스너를 추가합니다. 이 스레드 또는 다른 스레드에서 변경 사항이 커밋될 때 리스너가 실행됩니다.

Realm 인스턴스는 스레드당 싱글톤이며 캐시되므로 Close() 를 호출하는 경우에도 리스너를 수동으로 제거해야 합니다. 그렇지 않으면 메모리 누수의 위험이 있습니다.

매개변수

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

스로우

  • 불법적인 인수예외 - 변경 리스너가 인 null 경우.

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

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클래스 내

public static boolean compactRealm (
RealmConfiguration configuration
)

Realm 파일을 압축합니다. Realm 파일에는 일반적으로 여유 공간/사용하지 않은 공간이 포함되어 있습니다. 이 방법을 사용하면 이 여유 공간이 제거되어 파일 크기가 줄어듭니다. Realm 파일 내의 객체는 변경되지 않습니다. 이 메서드를 호출하기 전에 파일을 닫아야 하며, 그렇지 않으면 false 가 반환됩니다.

The file system should have free space for at least a copy of the Realm file.
The Realm file is left untouched if any file operation fails.

매개변수

반환

true 성공하면 false , 파일 작업이 실패하면 을 반환합니다.

public E copyFromRealm <E >(
E realmObject,
int maxDepth
)

이미 저장된 RealmObject 의 관리되지 않는 메모리 내 복사본을 만듭니다. 이는 모든 참고 객체를 정의된 깊이까지 복사하는 딥 카피입니다.

복사된 객체는 모두 Realm에서 분리되며 더 이상 자동으로 업데이트되지 않습니다. 이는 복사된 객체에 다른 관리되는 Realm 객체와 더 이상 일치하지 않는 데이터가 포함되어 있을 수 있음을 의미합니다.

*경고*: 복사된 객체에 대한 모든 변경 사항은 copyToRealmOrUpdate(RealmModel, ImportFlag...) 사용하여 Realm 에 다시 병합할 수 있지만 변경된 필드뿐만 아니라 모든 필드가 재정의됩니다. 여기에는 maxDepth 에 도달하여 null 일 수 있는 경우에도 다른 객체에 대한 참조가 포함됩니다. 이는 다른 스레드의 변경 사항을 잠재적으로 재정의할 수도 있습니다. 이 동작은 ImportFlag 를 사용하여 수정할 수 있습니다.

유형 매개변수

  • E - 객체의 유형입니다.

매개변수

  • realmObject - 복사할 RealmObject 입니다.

  • maxDepth - 딥 카피의 제한입니다. 이 깊이 이후의 모든 참고는 null 이 됩니다. 시작 깊이는 0 입니다.

반환

managed RealmObject 의 메모리 내 분리된 복사본입니다.

스로우

public E copyFromRealm <E >(
E realmObject
)

이미 저장된 RealmObject 의 관리되지 않는 메모리 내 복사본을 만듭니다. 이는 모든 참고 객체를 복사하는 딥 카피입니다.

복사된 객체는 모두 Realm에서 분리되며 더 이상 자동으로 업데이트되지 않습니다. 이는 복사된 객체에 다른 관리되는 Realm 객체와 더 이상 일치하지 않는 데이터가 포함되어 있을 수 있음을 의미합니다.

*경고*: 복사된 객체에 대한 모든 변경 사항은 copyToRealmOrUpdate(RealmModel, ImportFlag...) 사용하여 Realm에 다시 병합할 수 있지만 변경된 필드뿐만 아니라 모든 필드가 재정의됩니다. 여기에는 다른 객체에 대한 참조가 포함되며 다른 스레드에서 변경한 내용을 잠재적으로 재정의할 수 있습니다. 이 동작은 ImportFlag 를 사용하여 수정할 수 있습니다.

유형 매개변수

  • E - 객체의 유형입니다.

매개변수

반환

managed RealmObject 의 메모리 내 분리된 복사본입니다.

스로우

public List copyFromRealm <E >(
java.lang.Iterable<E> realmObjects,
int maxDepth
)

이미 저장된 RealmObject의 관리되지 않는 메모리 내 복사본을 만듭니다. 이는 참고된 모든 객체를 정의된 깊이까지 복사하는 딥 카피입니다. 복사된 객체는 모두 Realm에서 분리되며 더 이상 자동으로 업데이트되지 않습니다. 이는 복사된 객체에 다른 managed Realm 객체와 더 이상 일치하지 않는 데이터가 포함되어 있을 수 있음을 의미합니다.

*경고*: 복사된 객체에 대한 모든 변경 사항은 copyToRealmOrUpdate(Iterable, ImportFlag...) 사용하여 Realm 에 다시 병합할 수 있지만 변경된 필드뿐만 아니라 모든 필드가 재정의됩니다. This includes references to other objects even though they might be null due to maxDepth being reached. 이는 다른 스레드의 변경 사항을 잠재적으로 재정의할 수도 있습니다. 이 동작은 ImportFlag 를 사용하여 수정할 수 있습니다.

유형 매개변수

  • E - 객체의 유형입니다.

매개변수

  • realmObjects - 복사할 RealmObject입니다.

  • maxDepth - 딥 카피의 제한입니다. 이 깊이 이후의 모든 참고는 null 이 됩니다. 시작 깊이는 0 입니다.

반환

RealmObject의 메모리 내 분리된 복사본입니다.

스로우

다음도 참조하세요.

public List copyFromRealm <E >(
)

이미 저장된 RealmObject의 관리되지 않는 메모리 내 복사본을 만듭니다. 이는 참고된 모든 객체를 복사하는 딥 카피입니다. 복사된 객체는 모두 Realm에서 분리되며 더 이상 자동으로 업데이트되지 않습니다. 이는 복사된 객체에 다른 managed Realm 객체와 더 이상 일치하지 않는 데이터가 포함되어 있을 수 있음을 의미합니다.

*경고*: 복사된 객체에 대한 모든 변경 사항은 copyToRealmOrUpdate(RealmModel, ImportFlag...) 사용하여 Realm에 다시 병합할 수 있지만 변경된 필드뿐만 아니라 모든 필드가 재정의됩니다. 여기에는 다른 객체에 대한 참조가 포함되며 다른 스레드에서 변경한 내용을 잠재적으로 재정의할 수 있습니다. 이 동작은 ImportFlag 를 사용하여 수정할 수 있습니다.

유형 매개변수

  • E - 객체의 유형입니다.

매개변수

  • realmObjects - 복사할 RealmObject입니다.

반환

managed RealmObject의 메모리 내 분리된 복사본입니다.

스로우

다음도 참조하세요.

RealmObjects의 collection을 Realm 인스턴스에 복사하고 해당 복사본을 반환합니다. 원본 RealmObject에 대한 추가 변경 사항은 Realm 사본에 반영되지 않습니다. 이는 참고된 모든 객체가 복사되는 딥 카피입니다. 이 Realm에 이미 있는 객체는 무시됩니다.객체를 복사하면 모든 필드 값이 복사됩니다. 객체 및 하위 객체의 설정되지 않은 필드는 제공하지 않으면 기본값으로 설정됩니다.

매개변수

  • objects - Realm에 복사할 RealmObject입니다.

  • flags - Realm에 데이터를 삽입하는 동작을 수정하는 모든 플래그입니다.

반환

Realm에서 managed 속성이 있는 변환된 RealmObject의 목록입니다.

스로우

public E copyToRealm <E >(
E object,
)

RealmObject를 Realm 인스턴스에 복사하고 복사본을 반환합니다. 원본 RealmObject에 대한 추가 변경 사항은 Realm 사본에 반영되지 않습니다. 이는 딥 카피이므로 참고된 모든 객체가 복사됩니다. 이 Realm에 이미 있는 객체는 무시됩니다.객체를 복사하면 모든 필드 값이 복사됩니다. 이 객체 및 하위 객체의 설정되지 않은 필드는 제공하지 않으면 기본값으로 설정됩니다.

매개변수

  • object - Realm에 복사할 io.realm.RealmObject 입니다.

  • flags - Realm에 데이터를 삽입하는 동작을 수정하는 모든 플래그입니다.

반환

Realm이 지원하는 속성이 있는 관리되는 RealmObject입니다.

스로우

io.realm.annotations.PrimaryKey 로 식별되는 기존 RealmObjects 목록을 업데이트하거나 기존 객체를 찾을 수 없는 경우 새 복사본을 만듭니다. 이는 딥 카피 또는 업데이트입니다. 즉, 참고된 모든 객체가 복사되거나 업데이트됩니다.

객체를 복사하면 모든 필드 값이 복사됩니다. 객체 및 하위 객체의 설정되지 않은 필드는 제공하지 않으면 기본값으로 설정됩니다.

매개변수

  • objects - 업데이트하거나 Realm에 복사할 객체 목록입니다.

  • flags - Realm에 데이터를 삽입하는 동작을 수정하는 모든 플래그입니다.

반환

신규 또는 업데이트된 모든 RealmObject의 목록입니다.

스로우

다음도 참조하세요.

public E copyToRealmOrUpdate <E >(
E object,
)

동일한 io.realm.annotations.PrimaryKey 로 식별되는 기존 RealmObject를 업데이트하거나 기존 객체를 찾을 수 없는 경우 새 복사본을 만듭니다. 이는 딥 카피 또는 업데이트입니다. 즉, 참고된 모든 객체가 복사되거나 업데이트됩니다.

객체를 복사하면 모든 필드 값이 복사됩니다. 객체 및 하위 객체에서 설정되지 않은 필드는 제공하지 않으면 기본값으로 설정됩니다.

매개변수

  • object - 복사 또는 업데이트할 io.realm.RealmObject 입니다.

  • flags - Realm에 데이터를 삽입하는 동작을 수정하는 모든 플래그입니다.

반환

Realm에서 지원하는 모든 속성이 포함된 신규 또는 업데이트된 RealmObject입니다.

스로우

  • java.lang.IllegalArgumentException - 객체가 null 이거나 프라이머리 키가 정의되어 있지 않거나 다른 스레드의 Realm 인스턴스에 속하는 경우.

다음도 참조하세요.

public void createAllFromJson <E >(
JSONArray json
)

JSON 배열의 각 객체에 대한 Realm 객체를 만듭니다. 이 작업은 트랜잭션 내에서 수행되어야 합니다. 알 수 없는 속성이 있는 JSON 속성은 무시됩니다. JSON 객체에 RealmObject 필드가 없는 경우 RealmObject 필드는 해당 유형의 기본값으로 설정됩니다.

이 메서드는 현재 값 목록 필드를 지원하지 않습니다.

매개변수

  • clazz - 생성할 Realm 객체의 유형입니다.

  • json - 각 JSONObject가 지정된 클래스에 매핑해야 하는 배열입니다.

스로우

다음도 참조하세요.

public E createEmbeddedObject <E >(
RealmModel parentObject,
String parentProperty
)

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

매개변수

  • clazz - 생성할 객체의 클래스입니다. @RealmClass(embedded = true) 으로 표시해야 합니다.

  • parentObject - 내장된 객체에 대한 참고를 보유해야 하는 객체입니다.

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

반환

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

스로우

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

다음도 참조하세요.

public E createObject <E >(
Object primaryKeyValue
)

기본 키 값이 이미 설정된 상태에서 Realm에 새 객체를 인스턴스화하고 추가합니다. 값이 기본 키 제약 조건을 위반하면 객체가 추가되지 않으며 RealmException 이 발생합니다. 모델 클래스에서 제공하는 기본 키의 기본값은 무시됩니다.

매개변수

  • clazz - 생성할 객체의 클래스입니다.

  • primaryKeyValue - 기본 키 필드의 값입니다.

반환

새 객체.

스로우

public E createObject <E >(
)

새 객체 를 인스턴스화하고 Realm 에 추가합니다. 이 메서드는 @PrimaryKey 주석이 없는 모델 클래스에서만 사용할 수 있습니다. 기본 키 가 있는 객체 를 생성하려면 대신 createObject(Class, Object) 또는 copyToRealm(RealmModel, ImportFlag...) 를 사용하세요.

매개변수

  • clazz - 생성할 객체의 클래스입니다.

반환

새 객체.

스로우

  • RealmException - 기본 키가 모델 클래스에 정의되어 있거나 객체를 생성할 수 없는 경우.

다음도 참조하세요.

public E createObjectFromJson <E >(
JSONObject json
)

JSON 객체의 데이터로 미리 채워진 Realm 객체를 만듭니다. 이 작업은 트랜잭션 내에서 수행되어야 합니다. 속성을 알 수 없는 JSON 속성은 무시됩니다. JSON 객체에 RealmObject 필드가 없는 경우 RealmObject 필드는 해당 유형의 기본값으로 설정됩니다.

이 메서드는 현재 값 목록 필드를 지원하지 않습니다.

매개변수

  • clazz - 생성할 Realm 객체의 유형입니다.

  • json - 객체 데이터가 있는 JSONObject입니다.

반환

생성된 객체이거나 JSON 데이터가 제공되지 않은 경우 null 입니다.

스로우

다음도 참조하세요.

public void createOrUpdateAllFromJson <E >(
JSONArray json
)

프라이머리 키로 식별되는 기존 객체 목록을 새 JSON 데이터로 업데이트하려고 시도합니다. Realm에서 기존 객체를 찾을 수 없는 경우 새 객체가 생성됩니다. 이는 트랜잭션 내에서 발생해야 합니다. RealmObject 를 업데이트할 때 JSON 객체에 필드가 없으면 해당 필드가 업데이트되지 않습니다. 새 RealmObject 가 생성되었지만 JSON 객체에서 필드를 찾을 수 없는 경우 해당 필드에 필드 유형의 기본값이 할당됩니다.

이 메서드는 현재 값 목록 필드를 지원하지 않습니다.

매개변수

  • clazz - 만들거나 업데이트할 io.realm.RealmObject 의 유형입니다. 여기에는 기본 키가 정의되어 있어야 합니다.

  • json - 객체 데이터가 있는 배열입니다.

스로우

다음도 참조하세요.

JSONObject json
)

기본 키로 정의된 기존 객체를 새 JSON 데이터로 업데이트하려고 시도합니다. 기존 객체를 찾을 수 없으면 새 객체가 Realm에 저장됩니다. 이는 트랜잭션 내에서 발생해야 합니다. RealmObject 를 업데이트할 때 JSON 객체에 필드가 없으면 해당 필드가 업데이트되지 않습니다. 새 RealmObject 가 생성되었지만 JSON 객체에서 필드를 찾을 수 없는 경우 해당 필드에 필드 유형의 기본값이 할당됩니다.

이 메서드는 현재 값 목록 필드를 지원하지 않습니다.

매개변수

  • clazz - 만들거나 업데이트할 io.realm.RealmObject 의 유형입니다. 여기에는 기본 키가 정의되어 있어야 합니다.

  • json - 객체 데이터가 있는 org.json.JSONObject .

반환

io.realm.RealmObject 가 생성되거나 업데이트되었습니다.

스로우

다음도 참조하세요.

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

매개변수

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

스로우

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

public static boolean deleteRealm (
RealmConfiguration configuration
)

파일 시스템에서 주어진 RealmConfiguration 에 지정된 관련 임시 파일과 함께 Realm 파일을 삭제합니다. '.lock'이 있는 임시 파일 확장 프로그램은 삭제되지 않습니다.

이 메서드를 호출하기 전에 모든 Realm 인스턴스를 닫아야 합니다.

경고: 동기화된 Realm의 경우 사용자가 제어하는 모든 Realm 인스턴스가 닫히더라도 백그라운드 스레드의 내부 Realm 인스턴스가 닫히지 않을 가능성이 있습니다. 이렇게 하면 IllegalStateException 이 발생합니다. https://github.com/realm/realm-java/issues/5416 문제를 참조하세요. .

매개변수

반환

false Realm 파일을 삭제할 수 없는 경우. 임시 파일 삭제 실패는 반환 값에 영향을 주지 않습니다. 실패한 모든 파일 삭제가 기록됩니다.

스로우

  • 불법적인 상태 예외 - 다른 스레드나 다른 프로세스에서 Realm 인스턴스가 열려 있는 경우.

public void executeTransaction (
Realm.Transaction transaction
)

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

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

매개변수

스로우

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

매개변수

  • transaction - 실행할 io.realm.Realm.Transaction .

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

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

반환

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

스로우

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

매개변수

반환

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

스로우

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

매개변수

반환

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

스로우

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

매개변수

반환

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

스로우

public Realm freeze ()

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

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

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

반환

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

재정의

freeze BaseRealm클래스 내

public static Context getApplicationContext ()

Realm.init(Context) 또는 Realm.init(Context, string) 을 사용하여 을 초기화할 때 사용되는 애플리케이션 컨텍스트를 가져옵니다.Realm

반환

Realm.init(Context) 또는 Realm.init(Context, string ) 을 사용하여 을 초기화할 때 사용되는 애플리케이션 컨텍스트이거나,Realm Realm 이 아직 초기화되지 않은 경우 null입니다.

getDefaultInstance() 에 대한 기본값 구성을 반환합니다.

반환

기본 구성 객체이거나 기본 구성이 지정되지 않은 경우 null 입니다.

public static Realm getDefaultInstance ()

setDefaultConfiguration(RealmConfiguration) 에 의해 설정된 io.realm.RealmConfiguration 에 의해 정의된 Realm 인스턴스를 반환하는 Realm 정적 생성자

반환

Realm 클래스의 인스턴스입니다.

스로우

public static Object getDefaultModule ()

기본 Realm 모듈을 반환합니다. 이 모듈에는 현재 프로젝트에 있는 모든 Realm 클래스가 포함되지만 라이브러리 또는 프로젝트 종속성의 Realm 클래스는 포함되지 않습니다. 이들의 Realm 클래스는 자체 모듈을 사용하여 노출해야 합니다.

반환

기본 Realm 모듈 또는 기본 모듈이 없는 경우 null 입니다.

스로우

public static int getGlobalInstanceCount (
RealmConfiguration configuration
)

이 구성을 사용하는 현재 프로세스의 모든 스레드에서 열려 있는 Realm 인스턴스의 현재 수를 반환합니다. 여기에는 동적 Realm과 일반 Realm이 모두 포함됩니다.

매개변수

반환

모든 스레드에서 열려 있는 Realm 인스턴스 수입니다.

public static Realm getInstance (
RealmConfiguration configuration
)

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

매개변수

반환

Realm 클래스의 인스턴스

스로우

RealmConfiguration configuration,
)

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

매개변수

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

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

반환

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

스로우

public static int getLocalInstanceCount (
RealmConfiguration configuration
)

이 메서드를 호출하는 스레드에서 열려 있는 Realm 인스턴스의 현재 수를 반환합니다. 여기에는 동적 Realm과 일반 Realm이 모두 포함됩니다.

매개변수

반환

호출자 스레드에서 열려 있는 Realm 인스턴스의 수입니다.

이 Realm 에 대한 스키마 를 반환합니다. 스키마 는 변경할 수 없습니다. 수정하려고 하면 UnsupportedOperationException 이 발생합니다. .

스키마는 DynamicRealm.getSchema() 를 통해서만 수정할 수 있습니다. 또는 마이그레이션을 통해 수행할 수 있습니다.

반환

이 Realm의 RealmSchema 입니다.

재정의

getSchema BaseRealm클래스 내

public static synchronized void init (
Context context,
String userAgent
)

Realm 라이브러리를 초기화하고 사용할 준비가 된 기본 구성을 생성합니다. 다른 Realm API와 상호 작용하기 전에 이 메서드를 호출해야 합니다 .하위 클래스:

public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Realm.init(this, "MyApp/" + BuildConfig.VERSION_NAME);
}
}

AndroidManifest.xml 파일에 등록하는 것을 잊지 마세요:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="io.realm.example">
<application android:name=".MyApplication">
// ...
</application>
</manifest>

매개변수

  • context - 애플리케이션 컨텍스트.

  • userAgent - 세션이 설정될 때 User-Agent 헤더의 일부로 Realm 객체 서버에 전송될 선택적 사용자 정의 문자열입니다. 이 설정은 동기화되지 않은 Realm에서는 사용되지 않습니다.

스로우

  • 불법적인 인수예외 - 컨텍스트 또는 userAgent가 제공된 경우.null

  • 불법적인상태 예외 - Context.getFilesDir() 을 찾을 수 없는 경우.

다음도 참조하세요.

public static synchronized void init (
Context context
)

Realm 라이브러리를 초기화하고 사용할 준비가 된 기본 구성을 생성합니다. 다른 Realm API와 상호 작용하기 전에 이 메서드를 호출해야 합니다 .하위 클래스:

public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Realm.init(this);
}
}

AndroidManifest.xml 파일에 등록하는 것을 잊지 마세요:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="io.realm.example">
<application android:name=".MyApplication">
// ...
</application>
</manifest>

매개변수

  • context - 애플리케이션 컨텍스트.

스로우

  • 불법적인인수 예외 - null 컨텍스트가 제공되는 경우.

  • 불법적인상태 예외 - Context.getFilesDir() 을 찾을 수 없는 경우.

다음도 참조하세요.

public void insert (
RealmModel object
)

관리되지 않는 RealmObject를 삽입합니다. 이 방법은 삽입된 요소를 반환하지 않고 최소 할당 및 검사를 수행하므로 일반적으로 copyToRealm(RealmModel, ImportFlag...) 보다 빠릅니다. 삽입된 후에는 원본 객체에 대한 변경 사항이 유지되지 않습니다.

참고 사항:

  • 제공된 객체가 이미 managed 되고 있는지 확인하지 않으므로 managed 되는 객체를 삽입하면 중복될 수 있습니다. 객체에 프라이머리 키가 없는 경우에만 복제가 발생합니다. 기본 키가 있는 객체는 절대 복제되지 않습니다.

  • 각 요소에 대해 managed RealmObject 를 생성하거나 반환하지 않습니다.

  • 객체를 복사하면 모든 필드 값이 복사됩니다. 객체 및 하위 객체의 설정되지 않은 필드를 제공하지 않으면 기본값으로 설정됩니다.

managed RealmObject 를 반환하려면 copyToRealm(RealmModel, ImportFlag...) 를 사용하고, 그렇지 않으면 객체 가 많은 경우 일반적으로 이 메서드가 더 빠릅니다.

매개변수

  • object - 삽입할 RealmObject입니다.

스로우

  • 불법적인 상태 예외 - 해당 Realm이 닫혔거나, 잘못된 스레드에서 호출되었거나, 트랜잭션이 아닌 경우.

  • io.realm.Exceptions.RealmPrimaryKeyConsraintException - 동일한 기본 키를 가진 두 객체가 삽입되거나 기본 키 값이 이미 Realm에 존재하는 경우.

관리되지 않는 RealmObjects 목록을 삽입합니다. 이 방법은 삽입된 요소를 반환하지 않고 최소 할당 및 검사를 수행하므로 일반적으로 copyToRealm(Iterable, ImportFlag...) 보다 빠릅니다. 삽입된 후에는 원본 객체에 대한 변경 사항이 유지되지 않습니다.

참고 사항:

  • 제공된 객체가 이미 managed 되고 있는지 확인하지 않으므로 managed 되는 객체를 삽입하면 중복될 수 있습니다. 객체에 프라이머리 키가 없는 경우에만 복제가 발생합니다. 기본 키가 있는 객체는 절대 복제되지 않습니다.

  • 각 요소에 대해 managed RealmObject 를 생성하거나 반환하지 않습니다.

  • 객체를 복사하면 모든 필드 값이 복사됩니다. 객체 및 하위 객체의 설정되지 않은 필드를 제공하지 않으면 기본값으로 설정됩니다.

managed RealmObject 를 반환하려면 copyToRealm(Iterable, ImportFlag...) 를 사용하고, 그렇지 않으면 객체 가 많은 경우 일반적으로 이 메서드가 더 빠릅니다.

매개변수

  • objects - 삽입할 RealmObject입니다.

스로우

  • 불법적인 상태 예외 - 해당 Realm이 닫혔거나, 잘못된 스레드에서 호출되었거나, 트랜잭션이 아닌 경우.

public void insertOrUpdate (
RealmModel object
)

관리되지 않는 RealmObject를 삽입하거나 업데이트합니다. 이 방법은 삽입된 요소를 반환하지 않고 최소 할당 및 검사를 수행하므로 일반적으로 copyToRealmOrUpdate(RealmModel, ImportFlag...) 보다 빠릅니다. 삽입된 후에는 원본 객체 에 대한 변경 사항이 유지되지 않습니다.

참고 사항:

  • 제공된 객체가 이미 managed 되고 있는지 확인하지 않으므로 managed 되는 객체를 삽입하면 중복될 수 있습니다. 객체에 프라이머리 키가 없는 경우에만 복제가 발생합니다. 기본 키가 있는 객체는 절대 복제되지 않습니다.

  • 각 요소에 대해 managed RealmObject 를 생성하거나 반환하지 않습니다.

  • 객체를 복사하면 모든 필드 값이 복사됩니다. 객체 및 하위 객체의 설정되지 않은 필드를 제공하지 않으면 기본값으로 설정됩니다.

managed RealmObject 를 반환하려면 copyToRealm(RealmModel, ImportFlag...) 를 사용하고, 그렇지 않으면 객체 가 많은 경우 일반적으로 이 메서드가 더 빠릅니다.

매개변수

  • object - 삽입할 RealmObject입니다.

스로우

  • 불법적인 상태 예외 - 해당 Realm이 닫혔거나, 잘못된 스레드에서 호출되었거나, 트랜잭션이 아닌 경우.

관리되지 않는 RealmObjects 목록을 삽입하거나 업데이트합니다. 이 방법은 삽입된 요소를 반환하지 않고 최소 할당 및 검사를 수행하므로 일반적으로 copyToRealmOrUpdate(Iterable, ImportFlag...) 보다 빠릅니다. 삽입된 후에는 원본 객체에 대한 변경 사항이 유지되지 않습니다.

참고 사항:

  • 제공된 객체가 이미 managed 되고 있는지 확인하지 않으므로 managed 되는 객체를 삽입하면 중복될 수 있습니다. 객체에 프라이머리 키가 없는 경우에만 복제가 발생합니다. 기본 키가 있는 객체는 절대 복제되지 않습니다.

  • 각 요소에 대해 managed RealmObject 를 생성하거나 반환하지 않습니다.

  • 객체를 복사하면 모든 필드 값이 복사됩니다. 객체 및 하위 객체의 설정되지 않은 필드를 제공하지 않으면 기본값으로 설정됩니다.

managed RealmObject 를 반환하려면 copyToRealm(Iterable, ImportFlag...) 를 사용하고, 그렇지 않으면 객체 가 많은 경우 일반적으로 이 메서드가 더 빠릅니다.

매개변수

  • objects - 삽입할 RealmObject입니다.

스로우

  • 불법적인 상태 예외 - 해당 Realm이 닫혔거나, 잘못된 스레드에서 호출되었거나, 트랜잭션이 아닌 경우.

  • io.realm.Exceptions.RealmPrimaryKeyConsraintException - 동일한 기본 키를 가진 두 객체가 삽입되거나 기본 키 값이 이미 Realm에 존재하는 경우.

public boolean isEmpty ()

io. 영역. Realm 에는 모든 객체가 포함되어 있습니다.

반환

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

재정의

isEmpty BaseRealm클래스 내

public static void migrateRealm (
RealmConfiguration configuration,
RealmMigration migration
)

RealmMigration에서 마이그레이션을 수동으로 Atlas Triggers합니다.

매개변수

  • configuration -:ref:RealmConfiguration <io_realm_RealmConfiguration> .

  • migration - the RealmMigration to run on the Realm. 이렇게 하면 구성의 모든 마이그레이션 세트가 재정의됩니다.

스로우

public static void migrateRealm (
RealmConfiguration configuration
)

지정된 RealmConfiguration과 관련된 마이그레이션을 수동으로 Atlas Triggers합니다. Realm이 이미 최신 버전인 경우 아무 변화도 일어나지 않습니다.

매개변수

스로우

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

스로우

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

다음도 참조하세요.

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

매개변수

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

스로우

다음도 참조하세요.

public static void removeDefaultConfiguration ()

현재 기본 구성(있는 경우)을 제거합니다. setDefaultConfiguration(RealmConfiguration) 을 사용하여 새로운 기본 구성을 설정할 때까지 getDefaultInstance() 에 대한 추가 호출은 실패합니다.
public static void setDefaultConfiguration (
RealmConfiguration configuration
)

io를 설정합니다. 영역.RealmConfigurationgetDefaultInstance() 를 호출할 때 사용됩니다.

매개변수

스로우

이 유형의 특정 객체를 쿼리하는 데 사용할 수 있는 유형이 지정된 RealmQuery를 반환합니다.

매개변수

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

반환

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

다음도 참조하세요.

돌아가기

ProxyState