订阅

暂停 乐趣 <t : RealmObject> RealmQuery<t>.订阅(name String updateExisting Boolean = false mode WaitForSync = WaitForSync.FIRST_TIME timeout Duration = Duration.INFINITE): RealmResults<t>

在后台通过查询自动创建命名订阅,并返回对本地 Realm 文件运行相同查询的结果。

与执行以下操作相比,这是一种更简化的替代方法:

fun suspend getData(realm: Realm): RealmResults<Person> {
realm.subscriptions.update { bgRealm ->
add("myquery", bgRealm.query<Person>())
}
realm.subscriptions.waitForSynchronization()
return realm.query<Person>().find()
}

可以定义是否等待服务器发送所有数据后再运行本地查询。 这是相关的,因为由于延迟或需要下载大型数据集,从创建订阅到设备上可用数据可能会有延迟。

默认行为是,首次调用订阅时,只有从服务器下载数据后才会返回查询结果。 在后续调用订阅同一查询时,该查询将立即在本地数据库上运行,同时在后台下载所有更新。

返回

针对本地 Realm 文件运行查询的结果。 返回的结果取决于使用的模式

参数

名称

订阅的名称。 这可用于稍后在SubscriptionSet中进行识别。

模式

用于解析订阅的模式。 有关更多详细信息,请参阅WaitForSync

超时

等待服务器返回订阅定义的对象的时间。 这只与WaitForSync.ALWAYSWaitForSync.FIRST_TIME相关。

抛出异常

超时 取消 异常

在返回查询结果之前达到指定的超时时间。

如果在未使用 Flexible Sync 的 Realm 上调用此方法。

如果服务器不接受该组查询。 确切原因可在异常消息中找到。


暂停 乐趣 <t : RealmObject> RealmQuery<t>.订阅(模式 WaitForSync = WaitForSync.FIRST_TIME 超时 Duration = Duration.INFINITE): RealmResults<t>
暂停 乐趣 <t : RealmObject> RealmResults<t>.订阅(模式 WaitForSync = WaitForSync.FIRST_TIME 超时 Duration = Duration.INFINITE): RealmResults<t>

在后台从本地查询结果自动创建匿名订阅,并返回对 Realm 文件重新运行相同查询的结果。 其行为与通过调用subscribe创建命名变体的行为相同。 有关确切行为的详细信息,请参阅此方法。

返回

针对本地 Realm 文件运行查询的结果。 返回的结果取决于使用的模式

参数

模式

用于解析订阅的模式。 有关更多详细信息,请参阅WaitForSync

超时

等待服务器返回订阅定义的对象的时间。 这只与WaitForSync.ALWAYSWaitForSync.FIRST_TIME相关。

抛出异常

超时 取消 异常

在返回查询结果之前达到指定的超时时间。

如果在未使用 Flexible Sync 的 Realm 上调用此方法。


暂停 乐趣 <t : RealmObject> RealmResults<t>.订阅(name String updateExisting Boolean = false mode WaitForSync = WaitForSync.FIRST_TIME timeout Duration = Duration.INFINITE): RealmResults<t>

在背景从本地查询结果自动创建命名订阅,并返回对 Realm 文件重新运行相同查询的结果。

与执行以下操作相比,这是一种更简化的替代方法:

fun suspend getData(realm: Realm): RealmResults<Person> {
val results = realm.query<Person>().find()
realm.subscriptions.update { bgRealm ->
add("myquery", results.query(""))
}
realm.subscriptions.waitForSynchronization()
return realm.query<Person>().find()
}

可以定义是否等待服务器发送所有数据后再运行本地查询。 这是相关的,因为由于延迟或需要下载大型数据集,从创建订阅到设备上提供可用数据可能会出现延迟。

默认行为是,首次调用订阅时,只有从服务器下载数据后才会返回查询结果。 在后续调用订阅同一查询时,该查询将立即在本地数据库上运行,同时在后台下载所有更新。

返回

针对本地 Realm 文件运行查询的结果。 返回的结果取决于使用的模式

参数

名称

订阅的名称。 这可用于稍后在SubscriptionSet中进行识别。

模式

用于解析订阅的模式。 有关更多详细信息,请参阅WaitForSync

超时

等待服务器返回订阅定义的对象的时间。 这只与WaitForSync.ALWAYSWaitForSync.FIRST_TIME相关。

抛出异常

超时 取消 异常

在返回查询结果之前达到指定的超时时间。

如果在未使用 Flexible Sync 的 Realm 上调用此方法。

如果服务器不接受该组查询。 确切原因可在异常消息中找到。