Android Realm ChangeListener没有被触发 [英] Android Realm ChangeListener not being triggered

查看:89
本文介绍了Android Realm ChangeListener没有被触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Realm结果更改侦听器,它没有被触发,这是代码:

I've got a Realm results change listener that isn't being triggered, here's the code:

final RealmResults<LogEntry> entries = realm.where(LogEntry.class).findAll();

entries.addChangeListener(new RealmChangeListener<RealmResults<LogEntry>>() {
            @Override
            public void onChange(RealmResults<LogEntry> results) {
                Log.v("Testing", "The size is: " + results.size());
            }
        });

肯定添加了新的东西,我在域插入日志中打印出了表的新大小,但是由于某种原因,更改侦听器什么也不做?我在这里丢失了什么吗?似乎与文档相同.

There is definitely new stuff being added, I have a log on the realm insertion printing out the new size of the table, yet for some reason the change listener does nothing? Am I missing something here, it seems identical to the docs.

推荐答案

您需要保留对entries的类引用,以防止被GC使用:

You need to keep a class reference to entries to prevent it from being GC'ed:

public MyClass {

  private RealmResults<LogEntry> entries;

  public void myMethod() {

    entries = realm.where(LogEntry.class).findAll();
    entries.addChangeListener(new RealmChangeListener<RealmResults<LogEntry>>() {
            @Override
            public void onChange(RealmResults<LogEntry> results) {
                Log.v("Testing", "The size is: " + results.size());
            }
        });
    }
}

这篇关于Android Realm ChangeListener没有被触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆