我正在尝试从官方文档的通知部分了解Realm中的通知类型,当我在多个受管理的对象中使用RealmObject addChangeListener时,只有一个对象发生更改时,所有对象都会被调用。
这是我的代码
Person first = realm.where(Person.class).equalTo("id", 0).findFirst();
first.addChangeListener(new RealmChangeListener<Person>() {
@Override
public void onChange(Person person) {
Log.e(LOG_TAG, "First element is changing: " + person);
}
});
Person second = realm.where(Person.class).equalTo("id", 1).findFirst();
second.addChangeListener(new RealmChangeListener<Person>() {
@Override
public void onChange(Person person) {
Log.e(LOG_TAG, "Second person is changing: " + person);
}
});
当我在任何一个Person对象中触发更新时(例如在第一个对象中),这两个监听器都会被调用。
官方文档如下所述:
监听器也可以附加到RealmObject实例以及RealmResults实例。这允许您对对象和查询结果的更改做出反应。
还有:
最后,基于类型的更改侦听器将在引用的类型更改时收到通知。
从我理解的情况来看,这种行为符合第二个定义,但我需要使用第一种行为,也就是说,当更改与该侦听器对应的对象时,我想要收到通知。因此,如果更新第一个Person对象,则只有其对应的监听器会收到通知,而不是所有Person监听器。