领域查询通知不使用Kotlin解雇

时间:2016-10-07 21:45:24

标签: android realm kotlin

我无法使用Kotlin在Android中触发Realm Query Notifications。我已经分别尝试了完整的(1)和lambda(2)语法:

object DataService {

    val realm: Realm = Realm.getDefaultInstance()

    var allDogs: RealmResults<Dog> = realm.where(Dog::class.java).findAll()

    fun start() {

        // (1)
        allDogs.addChangeListener(object: RealmChangeListener<RealmResults<Dog>> {
            override fun onChange(element: RealmResults<Dog>?) {
                print("Ping?")
            }
        })

        // (2)
        allDogs.addChangeListener {
            // This listener doesn't fire when I create managed the Dog object below
            print("Ping?")
        }

        realm.executeTransaction {
            realm.createObject(Dog::class.java)
        }
    }
}

我想知道它是否与文档中的这一行有关:

  

更改侦听器仅适用于Looper线程。对于非弯针线程,   你手动必须使用Realm.waitForChange()。

1 个答案:

答案 0 :(得分:0)

这不是因为您使用kotlin,而是因为您没有保留对RealmResult对象的任何引用,如果您正在为它们创建侦听器,请先将结果保存为属性或类成员,然后添加听众。