패키지 io.realm

클래스 RealmConfiguration.Builder

  • 클래스를 둘러싸는 경우:
    RealmConfiguration

    public static class RealmConfiguration.Builder
    extends Object
    RealmConfiguration.Builder는 RealmConfiguration의 인스턴스를 유창하게 구성하는 데 사용됩니다.
    • 생성자 세부 정보

      • 빌더

        public Builder()
        RealmConfiguration을 위한 빌더 인스턴스를 생성합니다.

        이렇게 하면 Realm 파일을 저장하기 위해 앱의 자체 내부 디렉토리를 사용합니다. 추가 권한이 필요하지 않습니다. 기본 위치는 /data/data/<packagename>/files 이지만 Android 공급업체 구현에 따라 변경될 수 있습니다.

    • 메서드 세부 정보

      • 디렉토리

        public RealmConfiguration.Builder 디렉토리​(파일 디렉토리)
        Realm 파일이 저장될 디렉토리를 지정합니다. The default value is context.getFilesDir(). 디렉토리가 존재하지 않으면 디렉토리가 생성됩니다.
        매개변수:
        directory - Realm 파일을 저장할 디렉토리입니다. 디렉토리는 쓰기 가능해야 합니다.
        예외 처리:
        IllegalArgumentException - directory 가 null인 경우, 쓰기 불가능 또는 파일입니다.
      • encryptionKey

        public RealmConfiguration.Builder encryptionKey​(byte[] 키)
        Realm 파일을 암호화하고 해독하는 데 사용되는 64바이트 키를 설정합니다. Realm 파일을 암호화하고 해독하는 데 사용되는 64 바이트 키를 설정합니다.
      • 스키마 버전

        public RealmConfiguration.Builder schemaVersion​(긴 schemaVersion)
        Realm의 스키마 버전을 설정합니다. 이 값은 기존 Realm 파일의 스키마 버전과 동일하거나 그 이상이어야 합니다. 스키마 버전이 기존 Realm보다 높은 경우 마이그레이션이 필요합니다.

        마이그레이션 코드가 제공되지 않으면 Realm은 RealmMigrationNeededException 를 발생시킵니다.

        다음도 참조하세요.
        migration(RealmMigration)
      • deleteRealmIFMigrationNeded

        public RealmConfiguration.Builder deleteRealmIFMigrationneeded()
        이 값을 설정하면 마이그레이션 예외가 처리되는 방식이 변경됩니다. RealmMigrationNeededException 을(를) 발생시키는 대신 온디스크 Realm이 지워지고 새 Realm 스키마로 다시 생성됩니다.

        제공된 자산 파일이 마이그레이션에서 삭제되므로 assetFile(String) 을(를) 호출하여 자산 파일을 동시에 갖도록 구성할 수 없습니다.

        경고! 이로 인해 데이터가 손실됩니다.

        예외 처리:
        IllegalStateException - 이전에 assetFile(String) 를 호출하여 자산 파일을 사용하도록 구성된 경우.
      • inMemory

        public RealmConfiguration.Builder inMemory()
        이 옵션을 설정하면 디스크에 저장하는 대신 인메모리 Realm이 생성됩니다. 메모리가 부족한 경우 인메모리 Realm에서 여전히 디스크 공간을 사용할 수 있지만 Realm이 닫히면 인메모리 Realm에서 생성된 모든 파일이 삭제됩니다.

        메모리 내 Realm은 지속되지 않기 때문에 데이터를 지속하려면 특정 이름의 Realm 객체에 대한 닫히지 않은 참고를 하나 이상 보유하고 있어야 합니다.

      • 모듈

        public RealmConfiguration.Builder 모듈​(객체 baseModule,
                                                  객체... additionalModule)
        기존 모듈을 하나 이상의 RealmModule로 대체합니다. 이 방법을 사용하면 이 Realm의 현재 스키마가 제공된 모듈에서 정의된 스키마로 대체됩니다.

        프로젝트의 모든 Realm 클래스(종속성 제외)를 포함하는 기본 Realm 모듈에 대한 참고는 Realm.getDefaultModule() 을(를) 사용하여 찾을 수 있습니다. 따라서 다음 코드를 사용하여 앱 프로젝트의 스키마와 라이브러리 종속성을 결합합니다.

        builder.modules(Realm.getDefaultMode(), new MyLibraryModule());

        매개변수:
        baseModule - 첫 번째 Realm 모듈(필수).
        additionalModules - 추가 Realm 모듈
        예외 처리:
        IllegalArgumentException - 모듈 중 하나에 RealmModule 주석이 없는 경우.
        다음도 참조하세요.
        Realm.getDefaultModule()
      • addModule

        public final RealmConfiguration.Builder addModule​(Object module)
        FIXME: 일시적으로 표시되는 DEBUG 메서드. 조건 없이 모듈을 추가합니다. 이미 정의된 모듈에 모듈을 추가합니다.
      • 초기 데이터

        public RealmConfiguration.Builder initialData​(Realm.트랜잭션 트랜잭션)
        초기 데이터를 Realm 로 설정합니다. 이 트랜잭션은 데이터베이스 파일이 생성될 때 처음으로 실행되거나 deleteRealmIfMigrationNeeded() 가 설정된 경우 데이터를 마이그레이션하는 동안에만 실행됩니다.
        매개변수:
        transaction - 실행할 트랜잭션입니다.
      • 자산 파일

        public RealmConfiguration.Builder 자산 파일​(문자열 자산 파일)
        지정된 자산 파일 경로에서 Realm 파일을 복사합니다.

        Realm을 처음 열 때 빈 파일을 만드는 대신 제공된 자산 파일에서 Realm 파일을 복사하여 대신 사용합니다.

        이 작업을 수행하면 복사된 파일이 삭제되기 때문에 deleteRealmIfMigrationNeeded() 작업과 함께 사용할 수 없습니다.

        경고: 이 작업은 시간이 오래 걸릴 수 있으므로 백그라운드 스레드에서 수행하는 것이 좋습니다.

        매개변수:
        assetFile - 자산 데이터베이스 파일의 경로입니다.
        예외 처리:
        IllegalStateException - deleteRealmIfMigrationNeeded() 을(를) 호출하여 스키마를 지우도록 구성된 경우.
      • 읽기 전용

        public RealmConfiguration.Builder readOnly()
        이를 설정하면 Realm이 읽기 전용이 되고 이 Realm에 대한 모든 쓰기 트랜잭션(write transaction)은 IllegalStateException 을(를) 표시하여 실패합니다.

        이는 특히 initialData(Realm.Transaction) 이(가) 읽기 전용 Realm과 함께 작동하지 않으며 이를 설정하면 IllegalStateException 이(가) 발생한다는 MEAN입니다.

        이 프로세스에서 Realm을 읽기 전용으로 표시하는 것은 Realm에만 적용됩니다. 다른 프로세스는 여전히 Realm에 쓸 수 있습니다.
      • compactOnLaunch

        public RealmConfiguration.Builder compactOnLaunch(CompactOnLaunchCallback compactOnLaunch)
        사용자에게 반환되기 전에 Realm 파일을 압축해야 하는지 여부를 결정하기 위해 설정합니다. 총 파일 크기(데이터 + 여유 공간)와 파일의 데이터가 사용한 바이트가 전달됩니다.
        매개변수:
        compactOnLaunch - 프로세스 수명 동안 처음으로 Realm을 열 때 사용자에게 반환되기 전에 압축해야 하는지 여부를 결정하기 위해 호출되는 콜백입니다. 총 파일 크기(데이터 + 여유 공간)와 파일의 데이터가 사용한 바이트가 전달됩니다.
      • maxNumberOfActiveVersions

        public RealmConfiguration.Builder maxNumberOfActiveVersions​(긴 숫자)
        더 많은 데이터를 쓰려고 할 때 IllegalStateException 가 발생하기 전에 Realm 파일에 있는 최대 라이브 버전 수를 설정합니다.

        Realm은 다양한 버전의 Realm 객체를 동시에 처리할 수 있습니다. 예를 들면 다음과 같습니다. Realm이 여러 스레드에서 열려 있거나 데이터가 파일에 기록되는 동안 객체가 정지되는 경우에 발생합니다.

        정상적인 상황에서는 문제가 되지 않지만 활성 버전 수가 너무 많아지면 디스크의 파일 크기에 부정적인 영향을 미칩니다. 따라서 이 매개변수를 설정하면 매우 큰 Realm이 발생할 수 있는 Realm 사용을 방지할 수 있습니다.

        매개변수:
        number - 예외가 발생하기 전의 최대 활성 버전 수입니다.
        다음도 참조하세요.
        FAQ
      • allowQueriesOnUiThread

        public RealmConfiguration.Builder allowQueriesOnUiThread​(부울 allowQueriesOnUiThread)
        UI 스레드에서 RealmQuery 을(를) 실행할 수 있는지 여부를 설정합니다.

        기본적으로 Realm은 메인 스레드에서 쿼리를 허용합니다. 그러나 이렇게 하면 애플리케이션에서 프레임 드롭이나 ANR이 발생할 수 있습니다. 쿼리를 UI가 아닌 스레드로 전환하거나 RealmQuery.findAllAsync() 또는 RealmQuery.findFirstAsync() 를 사용하는 것이 좋습니다.