RealmConfiguration.Builder 类
- java.lang.Object
-
- io.realm.RealmConfiguration.Builder
-
- 封装类:
- RealmConfiguration
public static class RealmConfiguration.Builder extends Object
RealmConfiguration.Builder 用于以流畅的方式构造 RealmConfiguration 的实例。
-
-
构造函数摘要
构造函数 Constructor 说明 Builder()
为 RealmConfiguration 创建 Builder 的实例。
-
方法摘要
-
-
-
方法详细信息
-
名称
公共RealmConfiguration.Builder名称(字符串文件名)
设置 Realm 文件的文件名。
-
目录
公共RealmConfiguration.Builder目录(文件目录)
指定 Realm 文件的保存目录。 默认值为context.getFilesDir()
。 如果该目录不存在,则会创建该目录。- 参数:
directory
- 保存 Realm 文件的目录。 目录必须可写。- 抛出异常:
IllegalArgumentException
- 如果directory
为 null,则不可写入或不可写入文件。
-
encryptionKey
公共RealmConfiguration.Builder加密密钥(byte[] key)
设置用于加密和解密 Realm 文件的 64 字节密钥。 设置用于加密和解密 Realm 文件的64字节密钥。
-
模式版本
public RealmConfiguration.Builder schemaVersion(long schemaVersion)
设置 Realm 的模式版本。 它必须等于或高于现有 Realm 文件的模式版本(如果有)。 如果模式版本高于现有 Realm,则需要进行迁移。如果未提供迁移代码,Realm 将抛出
RealmMigrationNeededException
。
-
migration
公共RealmConfiguration.Builder迁移( RealmMigration迁移)
将RealmMigration
设置为在需要迁移时运行。 如果此迁移无法将光盘模式升级到运行时模式,则会抛出RealmMigrationNeededException
。
-
deleteRealmIfMigrationNeeded
public RealmConfiguration.Builder deleteRealmIfMigrationNeeded()
设置此项将更改处理迁移异常的行为。 磁盘上的 Realm 将被清除并使用新的 Realm 模式重新创建,而不是抛出RealmMigrationNeededException
。无法通过调用
assetFile(String)
将其配置为同时具有资产文件,因为提供的资产文件将在迁移中删除。警告! 这将导致数据丢失。
- 抛出异常:
IllegalStateException
- 如果之前通过调用assetFile(String)
配置为使用资产文件。
-
inMemory
public RealmConfiguration.Builder inMemory()
设置此项将在内存中创建一个 Realm,而不是将其保存到磁盘。 如果内存不足,内存中的 Realm 可能仍会使用磁盘空间,但关闭 Realm 时,内存中的 Realm 创建的所有文件都将被删除。请注意,由于内存中的 Realm 不会持久化,因此只要您希望数据持续存在,就必须确保至少保留一个对内存中具有特定名称的 Realm 对象的非关闭引用。
-
模块
公共RealmConfiguration.Builder模块( 对象 baseModule, 对象 ... additionalModules)
用一个或多个RealmModule
替换现有模块。 使用此方法会将此 Realm 的当前模式替换为所提供模块定义的模式。可以使用
Realm.getDefaultModule()
找到对包含项目中所有 Realm 类(但不包括依赖项)的默认 Realm 模块的引用。 使用以下代码可将应用项目中的模式与库依赖项相结合:builder.modules(Realm.getDefaultMode(), new MyLibraryModule());
- 参数:
baseModule
- 第一个 Realm 模块(必需)。additionalModules
- 附加 Realm 模块- 抛出异常:
IllegalArgumentException
- 如果任何模块没有RealmModule
注解。- 另请参阅:
Realm.getDefaultModule()
-
addModule
public final RealmConfiguration.Builder addModule(Object module)
FIXME:临时可见的 DEBUG 方法。 将无条件添加模块。 将模块添加到已定义的模块中。
-
rxFactory
public RealmConfiguration.Builder rxFactory( @Nonnull RxObservableFactoryfactory )
设置用于从 Realm 对象创建 Rx Observables 的RxObservableFactory
。 默认工厂为RealmObservableFactory
。- 参数:
factory
- 要使用的工厂。
-
flowFactory
public RealmConfiguration.Builder flowFactory( @Nonnull FlowFactoryfactory )
设置用于从 Realm 对象创建协程流的FlowFactory
。 默认工厂为RealmFlowFactory
。- 参数:
factory
- 要使用的工厂。
-
初始数据
公共RealmConfiguration.Builder初始数据( Realm.Transaction事务)
在Realm
中设置初始数据。 仅在首次创建数据库文件时或设置了deleteRealmIfMigrationNeeded()
时迁移数据时才会执行此事务。- 参数:
transaction
- 要执行的事务。
-
assetFile
public RealmConfiguration.Builder assetFile( String assetFile)
从给定的资产文件路径复制 Realm 文件。首次打开 Realm 时,不会创建空文件,而是会从提供的资产文件中复制并使用 Realm 文件。
它不能与
deleteRealmIfMigrationNeeded()
结合使用,因为这样做只会导致复制的文件被删除。警告:这可能是一个耗时的操作,最好在后台线程上完成。
- 参数:
assetFile
— 资产数据库文件的路径。- 抛出异常:
IllegalStateException
- 如果已配置为通过调用deleteRealmIfMigrationNeeded()
来清除其模式。
-
只读
public RealmConfiguration.Builder readOnly()
设置此项将导致 Realm 变为只读,并且针对此 Realm 进行的所有写事务(write transaction)都将失败,并显示IllegalStateException
。这尤其平均值
将 Realm 标记为只读会应用于此进程中的 Realm。 其他进程仍然可以写入 Realm。initialData(Realm.Transaction)
不能与只读 Realm 结合使用,设置该值将导致抛出IllegalStateException
。
-
compactOnLaunch
public RealmConfiguration.Builder compactOnLaunch()
如果 Realm 文件变得太大并且可以恢复大量空间,设置此项将导致 Realm 压缩 Realm 文件。 有关详细信息,请参阅DefaultCompactOnLaunchCallback
。
-
compactOnLaunch
public RealmConfiguration.Builder compactOnLaunch( CompactOnLaunchCallback compactOnLaunch)
设置此项以确定 Realm 文件在返回给用户之前是否应进行压缩。 系统会向其传递总文件大小(数据 + 可用空间)以及文件中数据使用的字节数。- 参数:
compactOnLaunch
- 在进程生命周期中首次打开 Realm 时调用的回调,以确定在将其返回给用户之前是否应进行压缩。 系统会向其传递总文件大小(数据 + 可用空间)以及文件中数据使用的字节数。
-
maxNumberOfActiveVersions
public RealmConfiguration.Builder maxNumberOfActiveVersions(long number)
设置在尝试写入更多数据时抛出IllegalStateException
之前 Realm 文件中活动版本的最大数量。Realm 能够同时处理许多不同版本的 Realm 对象。 这可以例如 如果您在许多不同的线程上打开了一个 Realm 或在将数据写入文件时冻结了对象,则会发生这种情况。
在正常情况下,这不是问题,但如果活动版本的数量过多,则会对磁盘上的文件大小产生负面影响。 因此,设置此参数可用于防止使用可能导致 Realm 过大的 Realm。
- 参数:
number
- 引发异常之前的最大活动版本数。- 另请参阅:
- FAQ
-
allowWritesOnUiThread
public RealmConfiguration.Builder allowWritesOnUiThread(boolean allowWritesOnUiThread)
设置是否允许从用户界面线程调用Realm.executeTransaction(io.realm.Realm.Transaction)
。警告:Realm 不允许在主线程上运行同步事务,除非用户明确选择使用此方法。 我们建议将对
executeTransaction
的调用转移到非用户界面线程,或者使用Realm.executeTransactionAsync(io.realm.Realm.Transaction)
。
-
allowQueriesOnUiThread
public RealmConfiguration.Builder allowQueriesOnUiThread(boolean allowQueriesOnUiThread)
设置是否可以从用户界面线程启动RealmQuery
。默认情况下,Realm 允许在主线程上进行查询。 但是,这样做可能会导致应用程序掉帧,甚至出现 ANR。 我们建议将查询转移到非用户界面线程,或者使用
RealmQuery.findAllAsync()
或RealmQuery.findFirstAsync()
。
-
构建
公共RealmConfiguration build()
根据构建器参数创建 RealmConfiguration。- 返回:
- 创建的
RealmConfiguration
。
-
-