fun <E : RealmModel> E.addChangeListener(listener: RealmChangeListener<E>): Unit
向 RealmObject 添加变更侦听器,如果任何值字段或引用的 RealmObject 字段发生更改,或者 RealmList 字段本身发生更改,则会触发该变更侦听器。
注册变更侦听器不会阻止底层 RealmObject 被垃圾收集。 如果对 RealmObject 进行垃圾回收,则将停止触发变更侦听器。 为避免这种情况,请尽可能长时间地保留强引用,例如在类变量中。
class MyActivity : Activity {
private var person: Person?
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
person = realm.where<Person>().findFirst()
person?.addChangeListener(RealmChangeListener { person ->
// React to change
})
}
}
IllegalArgumentException
- 如果object
为null
或非托管对象,或者变更侦听器为null
。
IllegalStateException
- 如果您尝试从非 事件循环 或 IntentService 线程添加侦听器。
IllegalStateException
- 如果您尝试在事务中添加侦听器。
fun <E : RealmModel> E.addChangeListener(listener: RealmObjectChangeListener<E>): Unit
向 RealmObject 添加变更侦听器以获取有关变更的详细信息。 如果任何值字段或引用的 RealmObject 字段发生更改,或者 RealmList 字段本身发生更改,则会触发监听器。
注册变更侦听器不会阻止底层 RealmObject 被垃圾收集。 如果对 RealmObject 进行垃圾回收,则将停止触发变更侦听器。 为避免这种情况,请尽可能长时间地保留强引用,例如在类变量中。
class MyActivity : Activity {
private var person: Person?
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
person = realm.where<Person>().findFirst()
person?.addChangeListener(RealmObjectChangeListener { person, changeSet ->
// React to change
})
}
}
IllegalArgumentException
- 如果object
为null
或非托管对象,或者变更侦听器为null
。
IllegalStateException
- 如果您尝试从非 事件循环 或 IntentService 线程添加侦听器。