客户端侧暂停/恢复MongoDB Realm Sync的可行方法有哪些?
MongoDB Realm Sync 同步暂停/恢复实现方案
Realm 官方没有以「暂停/恢复」为关键词单独公开相关接口文档,但是通过同步会话控制的原生能力完全可以实现需求,以下是Realm .NET的具体实现方案,其他平台SDK逻辑通用:
核心实现方式
通过控制SyncSession的启停状态实现同步的暂停和恢复,该操作不会影响本地数据库的读写能力,仅停止和服务端的双向数据同步:
- 暂停同步:调用同步会话的
Stop()方法,即可停止所有上传、下载同步动作 - 恢复同步:调用同步会话的
Start()方法,SDK会自动同步暂停期间产生的所有本地增量数据,同时拉取服务端的变更,无需手动处理差量
.NET 代码示例
// 已打开的Realm实例 var realm = Realm.GetInstance(config); // 暂停同步 var session = realm.SyncSession; session.Stop(); // 需要恢复同步时调用 session.Start();
适用场景说明
你可以将该逻辑和系统网络状态监听能力结合,判断当前网络为WiFi/指定自有网络时调用Start(),非允许网络时调用Stop(),即可实现用户自主选择同步时机的需求。
其他平台通用逻辑
所有Realm Sync客户端SDK都支持该能力,仅方法命名略有差异:
- Swift/Obj-C端对应方法为
suspend()、resume() - Java/Android端对应方法为
stop()、start() - JavaScript/TypeScript端对应方法为
suspend()、resume()
注意事项
- 启停接口为线程安全,可直接在网络状态回调中调用,无需额外加锁
- 不建议频繁启停同步会话,每次启停都会触发和服务端的重连逻辑,高频操作会增加不必要的性能开销
- 若同步暂停超过7天,恢复同步时需要传输的增量数据量较大,建议首次恢复在稳定网络环境下操作
内容的提问来源于stack exchange,提问作者David Gerding
相关产品推荐
相关产品推荐

