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

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

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

最佳答案

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

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 - Android Realm ChangeListener没有被触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43174517/

10-10 16:11