Docs 菜单
Docs 主页
/ /
Atlas Device SDKs
/ / /

RealmConfiguration.Builder 类

在此页面上

  • io.realm
  • 构造函数
  • 方法摘要
  • 继承方法
  • 构造函数详细信息
  • 方法详细信息
  • addModule
  • allowQueriesOnUiThread
  • allowWritesOnUiThread
  • assetFile
  • 构建
  • compactOnLaunch
  • deleteRealmIfMigrationNeeded
  • 目录
  • encryptionKey
  • flowFactory
  • inMemory
  • 初始数据
  • maxNumberOfActiveVersions
  • migration
  • 模块
  • 名称
  • 只读
  • rxFactory
  • 模式版本
java.lang.Object
io.realm.RealmConfiguration.Builder

封装类:

RealmConfiguration

RealmConfiguration.Builder 用于以流畅的方式构造 RealmConfiguration 的实例。

构造函数和描述

为 RealmConfiguration 创建 Builder 的实例。

修饰符和类型
方法和说明
Object module
)

FIXME:临时可见的 DEBUG 方法。

boolean allowQueriesOnUiThread
)

设置是否可以从用户界面线程启动RealmQuery

boolean allowWritesOnUiThread
)

设置是否允许从用户界面线程调用Realm.executeTransaction

String assetFile
)

从给定的资产文件路径复制 Realm 文件。

根据构建器参数创建 RealmConfiguration。

设置此项以确定 Realm 文件在返回给用户之前是否应进行压缩。

如果 Realm 文件变得太大并且可以恢复大量空间,设置此项将导致 Realm 压缩 Realm 文件。

设置此项将更改处理迁移异常的行为。

File directory
)

指定 Realm 文件的保存目录。

byte[] key
)

设置用于加密和解密 Realm 文件的 64 字节密钥。

设置用于从 Realm 对象创建协程流的FlowFactory

设置此项将在内存中创建一个 Realm,而不是将其保存到磁盘。

io.realm.Realm中设置初始数据。

设置在出现 IllegalStateException 之前 Realm 文件中实时版本的最大数量 尝试写入更多数据时引发此错误。

io.realm.RealmMigration设置为在需要迁移时运行。

Object baseModule,
java.lang.Object[] additionalModules
)

用一个或多个RealmModule替换现有模块。

String filename
)

设置 Realm 文件的文件名。

设置此项将导致 Realm 变为只读,并且针对此 Realm 进行的所有写事务都将失败,并 抛出 IllegalStateException

设置用于从 Realm 对象创建 Rx Observables 的RxObservableFactory

long schemaVersion
)

设置 Realm 的模式版本。

  • 从类 java.lang.Object 继承的方法 :getClass ,hashCode ,equals ,clone ,toString ,notify ,notifyAll ,wait ,wait ,wait ,finalize

public Builder ()

为 RealmConfiguration 创建 Builder 的实例。这将使用应用自己的内部目录来存储 Realm 文件。 这不需要任何其他权限。 默认位置为/data/data/<packagename>/files ,但可能会根据 Android 的供应商实现而变化。
FIXME:临时可见的 DEBUG 方法。 将无条件添加模块。 将模块添加到已定义的模块中。
boolean allowQueriesOnUiThread
)

设置是否可以从用户界面线程启动RealmQuery

默认情况下,Realm 允许在主线程上进行查询。 但是,这样做可能会导致应用程序掉帧,甚至出现 ANR。 我们建议将查询转移到非用户界面线程,或者使用RealmQuery.findAllAsync()RealmQuery.findFirstAsync()

boolean allowWritesOnUiThread
)

设置是否允许从用户界面线程调用Realm.executeTransaction

警告:Realm 不允许在主线程上运行同步事务,除非用户明确选择使用此方法。 我们建议将对executeTransaction的调用转移到非用户界面线程,或者使用Realm.executeTransactionAsync

从给定的资产文件路径复制 Realm 文件。首次打开 Realm 时,不会创建空文件,而是从提供的资产文件中复制并使用 Realm 文件。

此操作不能与deleteRealmIfMigrationNeeded()结合使用,因为这样做只会导致复制的文件被删除。

警告:这可能是一个耗时的操作,最好在后台线程上完成。

参数

  • assetFile — 资产数据库文件的路径。

抛出异常

根据构建器参数创建 RealmConfiguration。

返回:

创建的RealmConfiguration

设置此项以确定 Realm 文件在返回给用户之前是否应进行压缩。 系统会向其传递总文件大小(数据 + 可用空间)以及文件中数据使用的字节数。

参数

  • compactOnLaunch - 在进程生命周期中首次打开 Realm 时调用的回调,以确定在将其返回给用户之前是否应进行压缩。 系统会向其传递总文件大小(数据 + 可用空间)以及文件中数据使用的字节数。

如果 Realm 文件变得太大并且可以恢复大量空间,设置此项将导致 Realm 压缩 Realm 文件。 有关详细信息,请参阅DefaultCompactOnLaunchCallback

设置此项将更改处理迁移异常的行为。 磁盘上的 Realm 将被清除并使用新的 Realm 模式重新创建,而不是抛出io.realm.Exceptions.RealmMigrationNeededException

无法通过调用assetFile( string )将其配置为同时具有资产文件,因为提供的资产文件将在迁移中删除。

警告! 这将导致数据丢失。

抛出异常

指定 Realm 文件的保存目录。 默认值为context.getFilesDir() 。 如果该目录不存在,则会创建该目录。

参数

  • directory - 保存 Realm 文件的目录。 目录必须可写。

抛出异常

设置用于加密和解密 Realm 文件的 64 字节密钥。 设置用于加密和解密 Realm 文件的 io.realm.Realm#ENCRYPTION_KEY_LENGTH 字节密钥。

设置用于从 Realm 对象创建协程流的FlowFactory 。 默认工厂是RealmFlowFactory

参数

  • factory - 要使用的工厂。

设置此项将在内存中创建一个 Realm,而不是将其保存到磁盘。 如果内存不足,内存中的 Realm 可能仍会使用磁盘空间,但关闭 Realm 时,内存中的 Realm 创建的所有文件都将被删除。请注意,由于内存中的 Realm 不会持久化,因此您必须确保只要您希望数据持续存在,就至少保留一个对内存中具有特定名称的 Realm 对象的非关闭引用。

io.realm.Realm中设置初始数据。 仅在首次创建数据库文件时或设置Builder.deleteRealmIfMigrationNeeded() 后迁移数据时执行此事务。

参数

  • transaction - 要执行的事务。

设置在出现 IllegalStateException 之前 Realm 文件中实时版本的最大数量 尝试写入更多数据时引发此错误。

Realm 能够同时处理许多不同版本的 Realm 对象。 这可以例如 如果您在许多不同的线程上打开了一个 Realm 或在将数据写入文件时冻结了对象,则会发生这种情况。

在正常情况下,这不是问题,但如果活动版本的数量过多,则会对磁盘上的文件大小产生负面影响。 因此,设置此参数可用于防止使用可能导致 Realm 过大的 Realm。

参数

  • number - 引发异常之前的最大活动版本数。

提示

另请参阅:

io.realm.RealmMigration设置为在需要迁移时运行。 如果此迁移无法将光盘模式升级到运行时模式,则会抛出io.realm.Exceptions.RealmMigrationNeededException
Object baseModule,
java.lang.Object[] additionalModules
)

用一个或多个RealmModule替换现有模块。 使用此方法会将此 Realm 的当前模式替换为所提供模块定义的模式。

可以使用Realm.getDefaultModule()找到对包含项目中所有 Realm 类(但不包括依赖项)的默认 Realm 模块的引用。 使用以下代码可将应用项目中的模式与库依赖项相结合:

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

参数

  • baseModule - 第一个 Realm 模块(必需)。

  • additionalModules - 附加 Realm 模块

抛出异常

提示

另请参阅:

设置 Realm 文件的文件名。

设置此项将导致 Realm 变为只读,并且针对此 Realm 进行的所有写事务都将失败,并 抛出 IllegalStateException

这尤其意味着, initialData(Realm.Transaction) 不能与只读 Realm 结合使用,设置此项将导致 IllegalStateException 被抛出。

将 Realm 标记为只读会应用于此进程中的 Realm。 其他进程仍然可以写入 Realm。

设置用于从 Realm 对象创建 Rx Observables 的RxObservableFactory 。 默认工厂是RealmObservableFactory

参数

  • factory - 要使用的工厂。

long schemaVersion
)

设置 Realm 的模式版本。 它必须等于或高于现有 Realm 文件的模式版本(如果有)。 如果模式版本高于已存在的 Realm,则需要进行迁移。如果未提供迁移代码,Realm 将抛出io.realm.Exceptions.RealmMigrationNeededException 异常

提示

另请参阅:

后退

RealmConfiguration