kotlin-extensions / io.realm.kotlin/ addChangeListener

addChangeListener

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
        })
    }
}

参数

listener - 要通知的变更侦听器。

异常

IllegalArgumentException - 如果objectnull或非托管对象,或者变更侦听器为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
        })
    }
}

参数

listener - 要通知的变更侦听器。

异常

IllegalArgumentException - 如果objectnull或非托管对象,或者变更侦听器为null

IllegalStateException - 如果您尝试从非 事件循环 或 IntentService 线程添加侦听器。

IllegalStateException - 如果您尝试在事务中添加侦听器。