领域:初始同步后的通知

时间:2017-06-10 15:27:10

标签: realm realm-mobile-platform

根据the docs,Realm可以在发生某些操作时通知您,例如“每次提交写入事务时”。我正在使用Realm对象服务器,当用户第一次打开我的应用程序时,大量数据将从服务器同步到应用程序。我想显示一个加载屏幕,并且在Realm完成初始同步之前不会显示我的应用程序的主UI。有没有办法在这个过程完成时得到通知/确定?

1 个答案:

答案 0 :(得分:1)

realm.io网站刚刚发布了关于如何执行此操作的documentation

异步开放领域

如果打开Realm可能需要耗时的操作,例如应用迁移或下载同步Realm的远程内容,则应使用openAsync API执行将Realm置于可用状态所需的所有工作。调度到给定队列之前的后台线程。您还应该将openAsync与设置为只读的Realms一起使用。

例如:

Realm.openAsync({
  schema: [PersonSchema],
  schemaVersion: 42,
  migration: function(oldRealm, newRealm) {
    // perform migration (see "Migrations" in docs)
  }
}, (error, realm) => {
  if (error) {
    return;
  }
  // do things with the realm object returned by openAsync to the callback
  console.log(realm);
})

openAsync命令将配置对象作为其第一个参数,将回调作为其第二个参数;回调函数接收一个布尔错误标志和打开的Realm。

初始下载

在某些情况下,您可能不希望在拥有所有远程数据之前打开Realm。在这种情况下,请使用openAsync。当与同步Realm一起使用时,这将在调用回调之前下载所有Realm的内容。

var carRealm;
Realm.openAsync({
  schema: [CarSchema],
  sync: {
    user: user,
    url: 'realm://object-server-url:9080/~/cars'
  }
}, (error, realm) => {
  if (error) {
    return;
  }
  // Realm is now downloaded and ready for use
  carRealm = realm;
});