SyncConfiguration.Builder 类

  • 封装类:
    SyncConfiguration

    public static final class SyncConfiguration.Builder
    extends Object
    Builder 用于以流畅的方式构造 SyncConfiguration 的实例。
    • 构造函数详细信息

      • 生成器

        公共构建器​(用户user)
        使用给定用户为 Flexible Sync SyncConfiguration创建构建器的实例。
        参数:
        user - 用于访问 Realm 应用的用户。
      • 生成器

        公共构建器( User user, @Nullable String partitionValue)
        使用给定的用户和分区值,为基于分区的同步SyncConfiguration创建构建器的实例。
        参数:
        user - 用于访问 Realm 应用的用户。
        partitionValue — 标识将同步的远程 Realm 的分区值。
      • 生成器

        公共构建器( User user, @Nullable ObjectId partitionValue)
        使用给定的用户和分区值,为基于分区的同步SyncConfiguration创建构建器的实例。
        参数:
        user - 用于访问 Realm 应用的用户。
        partitionValue — 标识将同步的远程 Realm 的分区值。
      • 生成器

        公共构建器​(用户user, @Nullable Integer partitionValue)
        使用给定的用户和分区值,为基于分区的同步SyncConfiguration创建构建器的实例。
        参数:
        user - 用于访问 Realm 应用的用户。
        partitionValue — 标识将同步的远程 Realm 的分区值。
      • 生成器

        公共构建器( User user, @Nullable Long partitionValue)
        使用给定的用户和分区值,为基于分区的同步SyncConfiguration创建构建器的实例。
        参数:
        user - 用于访问 Realm 应用的用户。
        partitionValue — 标识将同步的远程 Realm 的分区值。
      • 生成器

        公共构建器(用户user, @Nullable UUID partitionValue)
        使用给定的用户和分区值,为基于分区的同步SyncConfiguration创建构建器的实例。
        参数:
        user - 用于访问 Realm 应用的用户。
        partitionValue — 标识将同步的远程 Realm 的分区值。
    • 方法详细信息

      • 模式版本

        public SyncConfiguration.Builder schemaVersion​(long schemaVersion)
        设置 Realm 的模式版本。

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

        • 如果在使用此 schemaVersion 后首次连接到服务器时有另一个schemaVersion较小的客户端,则该值会更低。
        • 如果在此 Realm 创建后,另一个具有更高schemaVersion的客户端连接到服务器,则该值会更高。
        参数:
        schemaVersion - 模式版本。
        抛出异常:
        IllegalArgumentException - 如果模式版本无效。
      • 模块

        公共SyncConfiguration.Builder模块​( 对象 baseModule, 对象 ... additionalModules)
        用一个或多个RealmModule替换现有模块。 使用此方法会将此 Realm 的当前模式替换为所提供模块定义的模式。

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

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

        参数:
        baseModule - 第一个 Realm 模块(必需)。
        additionalModules - 附加 Realm 模块
        抛出异常:
        IllegalArgumentException - 如果任何模块没有RealmModule注解。
        另请参阅:
        Realm.getDefaultModule()
      • 模块

        public SyncConfiguration.Builder modules​(Iterable<Object> modules)
        用一个或多个RealmModule替换现有模块。 使用此方法会将此 Realm 的当前模式替换为所提供模块定义的模式。

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

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

        参数:
        modules — 第一个 Realm 模块的模块列表(必需)。
        抛出异常:
        IllegalArgumentException - 如果任何模块没有RealmModule注解。
        另请参阅:
        Realm.getDefaultModule()
      • inMemory

        public SyncConfiguration.Builder inMemory()
        设置此项将在内存中创建一个 Realm,而不是将其保存到磁盘。 如果内存不足,内存中的 Realm 可能仍会使用磁盘空间,但关闭 Realm 时,内存中的 Realm 创建的所有文件都将被删除。

        请注意,由于内存中的 Realm 不会持久化,因此只要您希望数据持续存在,就必须确保至少保留一个对内存中具有特定名称的 Realm 对象的非关闭引用。

      • errorHandler

        public SyncConfiguration.Builder errorHandler​( SyncSession.ErrorHandler errorHandler)
        设置此配置使用的错误处理程序。

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

        参数:
        errorHandler — 错误处理程序,用于在与 Realm 对象服务器通信时报告错误。
        抛出异常:
        IllegalArgumentException - 如果将null作为错误处理程序给出。
      • syncClientResetStrategy

        public SyncConfiguration.Builder syncClientResetStrategy( ManuallyRecoverUnsyncedChangesStrategy处理程序)
        设置发生客户端重置时的处理程序。 如果未设置处理程序,则在发生客户端重置时会记录错误。
        参数:
        handler - 客户端重置时的自定义手动处理程序。
      • waitForInitialRemoteData

        public SyncConfiguration.Builder waitForInitialRemoteData()
        设置此项将导致 Realm 在首次打开 Realm 时从服务器下载所有已知更改。 在下载所有数据之前,Realm 不会打开。 这意味着如果设备离线,Realm 将无法打开。

        由于下载所有更改可能是一项耗时的操作,可能会阻塞用户界面线程,因此启用此设置的 Realm 只能在后台线程上打开,或者在用户界面线程上使用Realm.getInstanceAsync(RealmConfiguration, Realm.Callback)打开。

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

      • waitForInitialRemoteData

        public SyncConfiguration.Builder waitForInitialRemoteData​(long timeout, TimeUnitunit )
        设置此项将导致 Realm 在首次打开 Realm 时从服务器下载所有已知更改。 在下载所有数据之前,Realm 不会打开。 这意味着如果设备离线,Realm 将无法打开。

        由于下载所有更改可能是一项耗时的操作,可能会阻塞用户界面线程,因此启用此设置的 Realm 只能在后台线程上打开,或者在用户界面线程上使用Realm.getInstanceAsync(RealmConfiguration, Realm.Callback)打开。

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

        参数:
        timeout - 在引发DownloadingRealmInterruptedException之前等待下载完成的时间。
        unit - 用于定义超时的时间单位。
      • compactOnLaunch

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

        public SyncConfiguration.Builder assetFile​( String assetFile)
        首次打开 Realm 时,不会创建空文件,而是会从提供的资产文件中复制并使用 Realm 文件。

        这可用于在 Realm 中预先填充数据,因此无需从服务器下载数据。

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

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

        参数:
        assetFile — 资产数据库文件的路径。
        抛出异常:
        IllegalStateException - 如果此 Realm 也标记为inMemory()
      • urlPrefix

        public SyncConfiguration.Builder urlPrefix​( String urlPrefix)
        在启动与 MongoDB Realm 的同步连接的 WebSocket 请求中添加到路径之前的前缀。 指定的值必须与服务器的配置匹配,否则设备将无法创建连接。 此值为可选值,仅应在特定防火墙规则需要时设置。
        参数:
        urlPrefix — 要附加到同步连接 URL 的前缀。
      • maxNumberOfActiveVersions

        public SyncConfiguration.Builder maxNumberOfActiveVersions​(long number)
        设置在尝试写入更多数据时抛出IllegalStateException之前 Realm 文件中活动版本的最大数量。

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

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

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

        参数:
        number - 引发异常之前的最大活动版本数。
        另请参阅:
        FAQ
      • allowQueriesOnUiThread

        public SyncConfiguration.Builder allowQueriesOnUiThread​(boolean allowQueriesOnUiThread)
        设置是否允许在用户界面线程中使用RealmQueries

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