Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 领域更改侦听器调用_Android_Realm - Fatal编程技术网

Android 领域更改侦听器调用

Android 领域更改侦听器调用,android,realm,Android,Realm,我有个问题。什么时候被称为RealmChangeListener?交易结束后?或手术后立即 我有一个关系1:N用户:任务。我想观察所有任务的变化 当我使用: realmUser.getTasks().add(realmTask) 为任务正确添加了一个任务,但未调用侦听器 我要更新此解决方案: realmTask = r.copyToRealm(realmTask) realmUser.getTasks().add(realmTask) 监听器可以工作,但问题是何时调用?这取决于更改监听器是在

我有个问题。什么时候被称为RealmChangeListener?交易结束后?或手术后立即

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

当我使用:

realmUser.getTasks().add(realmTask)
为任务正确添加了一个任务,但未调用侦听器

我要更新此解决方案:

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

监听器可以工作,但问题是何时调用?

这取决于更改监听器是在同一个线程上注册的,还是在不同的线程上注册的

如果在同一线程上,则在您调用以下命令时将触发它们:

  • Realm.refresh()
  • Realm.beginTransaction()
  • Realm.commitTransaction()
如果在不同的线程上,则当该线程从更改域的线程接收到循环器事件时,将触发它们。由于后台工作线程需要在调用任何侦听器之前计算所有要报告的更改,所以所需的时间可能会有所不同


如果侦听器为“空”或域未更改,即如果域已完全更新,则调用
refresh()
不一定会触发侦听器。

当您
commitTransaction()
时。如果事务在后台线程上,那么将在UI线程上延迟调用更改侦听器。