Docs 菜单

SyncConfiguration.Builder 类

io.realm.mongodb.sync.SyncConfiguration.Builder

封装类:

SyncConfiguration

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

构造函数和描述
User user
)

使用给定用户为 Flexible Sync SyncConfiguration创建构建器的实例。

User user,
String partitionValue
)

使用给定的用户和分区值,为基于分区的同步SyncConfiguration创建构建器的实例。

User user,
ObjectId partitionValue
)

使用给定的用户和分区值,为基于分区的同步SyncConfiguration创建构建器的实例。

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

将模块添加到已定义的模块中。

boolean allowQueriesOnUiThread
)

设置是否允许在用户界面线程中使用 RealmQueries

boolean allowWritesOnUiThread
)

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

String assetFile
)

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

根据构建器参数创建 RealmConfiguration。

设置发生客户端重置时的处理程序。

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

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

byte[] key
)

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

设置此配置使用的错误处理程序。

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

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

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

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

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

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

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

String filename
)

设置此设备上 Realm 文件的文件名。

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

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

long schemaVersion
)

设置 Realm 的模式版本。

设置发生客户端重置时的处理程序。

设置发生客户端重置时的处理程序。

String urlPrefix
)

在启动与 MongoDB Realm 的同步连接的 WebSocket 请求中添加到路径之前的前缀。

设置此项将导致 Realm 在首次打开 Realm 时从服务器下载所有已知更改。

设置此项将导致 Realm 在首次打开 Realm 时从服务器下载所有已知更改。

  • 从类 java.lang.Object 继承的方法 :getClasshashCodeequalsclonetoStringnotifynotifyAllwaitwaitwaitfinalize

public Builder (
User user
)

使用给定用户为 Flexible Sync SyncConfiguration创建构建器的实例。

参数

  • user - 用于访问 Realm 应用的用户。

另请参阅:

  • {@link SubscriptionSet} 以了解有关Flexible Sync的更多信息。

public Builder (
User user,
String partitionValue
)

使用给定的用户和分区值,为基于分区的同步SyncConfiguration创建构建器的实例。

参数

  • user - 用于访问 Realm 应用的用户。

  • partitionValue — 标识将同步的远程 Realm 的分区值。

public Builder (
User user,
ObjectId partitionValue
)

使用给定的用户和分区值,为基于分区的同步SyncConfiguration创建构建器的实例。

参数

  • user - 用于访问 Realm 应用的用户。

  • partitionValue — 标识将同步的远程 Realm 的分区值。

将模块添加到已定义的模块中。

boolean allowQueriesOnUiThread
)

设置是否允许在用户界面线程中使用RealmQueries

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

boolean allowWritesOnUiThread
)

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

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

首次打开 Realm 时,不会创建空文件,而是从提供的资产文件中复制并使用 Realm 文件。这可用于使用数据预填充 Realm,因此不会从服务器下载。

提供的 Realm 文件必须是给定用户的有效同步 Realm,并且必须是使用Realm.writeCopyTo(File)创建的 API。

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

参数

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

抛出异常

根据构建器参数创建 RealmConfiguration。

返回:

创建的SyncConfiguration

抛出异常

设置发生客户端重置时的处理程序。 如果未设置处理程序,则在发生客户端重置时会记录错误。

参数

  • handler - 客户端重置时的自定义处理程序。

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

参数

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

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

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

参数

  • key - 加密密钥。

抛出异常

设置此配置使用的错误处理程序。只有未由定义的SyncPolicy处理的错误才会报告给此错误处理程序。

参数

  • errorHandler — 错误处理程序,用于在与 Realm 对象服务器通信时报告错误。

抛出异常

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

参数

  • factory - 要使用的工厂。

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

io.realm.Realm中设置初始数据。 此事务仅在第一次打开(创建)Realm 文件时执行,或者在设置了RealmConfiguration.Builder.deleteRealmIfMigrationNeeded()的情况下迁移数据时执行。

参数

  • transaction - 要执行的事务。

io.subscription 设置初始 Subscription。 域。 Realm 。这只会在第一次打开Realm 文件(以及创建文件)时执行。如果还配置了 waitForInitialRemoteData(),则在所有订阅数据也上传后, 域文件才会完全打开。

参数

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

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

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

请注意,当此设备上集成了来自其他设备的更改时,版本号也会增加,因此活动版本的数量还将取决于写入同一 Realm 的其他设备正在执行的操作。

参数

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

另请参阅:

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

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

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

参数

  • modules — 第一个 Realm 模块的模块列表(必需)。

抛出异常

另请参阅:

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

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

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

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

参数

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

  • additionalModules - 附加 Realm 模块

抛出异常

另请参阅:

设置此设备上 Realm 文件的文件名。

参数

  • filename — Realm 文件的名称。

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

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

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

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

参数

  • factory - 要使用的工厂。

long schemaVersion
)

设置 Realm 的模式版本。Synced Realm 仅支持附加模式更改,无需手动迁移即可应用这些更改。 模式版本仅用于指示底层存储层删除或添加索引。 如果提供的模式版本与 Realm 文件中的版本不同,则将重新计算这些版本。 警告:不能保证此处插入的值与Realm.getVersion()返回的值相同。 由于同步 Realm 的性质,该值可能更高也可能更低。

  • 如果在使用此 schemaVersion 后首次连接到服务器时有另一个schemaVersion较小的客户端,则该值会更低。

  • 如果在此 Realm 创建后,另一个具有更高schemaVersion的客户端连接到服务器,则该值会更高。

参数

  • schemaVersion - 模式版本。

抛出异常

设置发生客户端重置时的处理程序。如果未设立处理程序,则在发生客户端重置时会记录错误。此策略仅适用于使用基于分区的同步的同步 Realm。使用 Flexible 同步 的 Realm 目前仅支持 syncClientResetStrategy(ManuallyRecoverUnsyncedChangesStrategy)

参数

  • handler - 自定义无缝丢失处理程序,以防客户端重置。

设置发生客户端重置时的处理程序。 如果未设置处理程序,则在发生客户端重置时会记录错误。

参数

  • handler - 客户端重置时的自定义手动处理程序。

在启动与 MongoDB Realm 的同步连接的 WebSocket 请求中添加到路径之前的前缀。 指定的值必须与服务器的配置匹配,否则设备将无法创建连接。 此值为可选值,仅应在特定防火墙规则需要时设置。

参数

  • urlPrefix — 要附加到同步连接 URL 的前缀。

设置此项将导致 Realm 在首次打开 Realm 时从服务器下载所有已知更改。 在下载所有数据之前,Realm 不会打开。 这意味着,如果设备处于离线状态,则 Realm 将无法打开。由于下载所有更改可能是一项冗长的操作,可能会阻塞用户界面线程,因此启用了此设置的 Realm 只能在后台线程上打开,或者使用Realm.getInstanceAsync(RealmConfiguration,用户界面线程上的Realm.Callback) 。

此检查仅在首次创建Realm时执行。 如果您想确保Realm具有最新更改,请使用SyncSession.downloadAllServerChanges()

参数

设置此项将导致 Realm 在首次打开 Realm 时从服务器下载所有已知更改。 在下载所有数据之前,Realm 不会打开。 这意味着,如果设备处于离线状态,则 Realm 将无法打开。由于下载所有更改可能是一项冗长的操作,可能会阻塞用户界面线程,因此启用了此设置的 Realm 只能在后台线程上打开,或者使用Realm.getInstanceAsync(RealmConfiguration,用户界面线程上的Realm.Callback) 。

此检查仅在首次创建Realm时执行。 如果您想确保Realm具有最新更改,请使用SyncSession.downloadAllServerChanges()