领域 - 改变监听者的召唤

时间:2018-01-22 16:34:27

标签: android realm

我有一个问题。何时被称为RealmChangeListener?交易完成后?或者在手术后立即。

我有一个关系1:N用户:任务。我想观察所有任务的变化。

当我使用时:

realmUser.getTasks().add(realmTask)

为任务正确添加了任务,但未调用侦听器。

我更新的是这个解决方案:

realmTask = r.copyToRealm(realmTask)
realmUser.getTasks().add(realmTask)

听众工作,但问题是何时被召唤?

1 个答案:

答案 0 :(得分:1)

这取决于更改侦听器是在同一个线程上还是在另一个线程上注册的。

如果在同一个帖子上,则在您致电时会触发:

  • Realm.refresh()
  • Realm.beginTransaction()
  • Realm.commitTransaction()

如果在另一个线程上,当该线程从更改了Realm的线程收到一个looper事件时,它们将被触发。由于后台工作线程需要在调用任何侦听器之前计算要报告的所有更改,因此需要多长时间可能会有所不同。

如果侦听器“空”或者领域没有改变,则不会触发侦听器,即如果领域已经完全更新,则不能保证调用refresh()触发侦听器。