首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RealmObject changeListener

RealmObject changeListener
EN

Stack Overflow用户
提问于 2016-06-17 20:21:43
回答 2查看 11.8K关注 0票数 2

我试图从正式文档中的通知部分了解领域中的通知类型,当我在多个托管对象中使用RealmObject addChangeListener时,所有这些类型都是在只有一个对象更改时调用的。

这是我的密码

代码语言:javascript
复制
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侦听器。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-18 05:28:26

现在发生这种情况是因为我们的变化检测不够细。它将为所有相同类型的对象触发更改监听器,而不仅仅是那些更改的对象。

让变更者只通知确切的对象是否已经改变,在这里被跟踪,https://github.com/realm/realm-java/issues/989

票数 2
EN

Stack Overflow用户

发布于 2017-03-23 01:20:47

使用findFirstAsync(),它返回一个空的和无效的realmModel。这就是如何使用它的addChangeListener()获得更新的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37889817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档