Я пытаюсь понять типы уведомлений в 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. Это позволяет вам реагировать на изменения ваших объектов и результатов запроса.
А также
Наконец, прослушиватели изменений на основе типов будут получать уведомления при изменении их типов, на которые они ссылаются.
Насколько я понимаю, наблюдаемое поведение согласуется со вторым определением, но мне нужно использовать первое поведение, то есть я хочу получать уведомления, когда объект, соответствующий этому слушателю, изменяется. Таким образом, если обновляется first Person, уведомляется только соответствующий слушатель, а не все слушатели Person.