如何从长沙发服务器获取每个更改通知?

问题描述 投票:0回答:1

Database.addChangeListener在Couchbase Lite 1.4.4中一段时间​​无法使用。

下面是我的代码

 database?.addChangeListener { event ->
    //using for only changed documents
    Log.e("changes",""+event.changes)

   val query = database?.createAllDocumentsQuery()
    query?.allDocsMode = Query.AllDocsMode.ALL_DOCS
    var result: QueryEnumerator? = null
    result = query?.run()
    val it = result

    if (it != null) {
        arrayList.clear()

        while (it.hasNext()) {
            val row = it.next()
            if (row.documentId.startsWith("refill-device-SERIAL-")) {
                obj = JSONObject(row.document.properties)
                val canisters = gson.fromJson(obj.toString(), Canisters::class.java)
                arrayList.add(canisters)
            }
        }
    }

    canistersArrayList.postValue(arrayList)
}

上面的代码有时无法触发…如果我想从数据库中获取所有更改事件,该怎么办?

android couchbase couchbase-lite
1个回答
0
投票

版本1.4.4已有数年历史;您确实应该使用2.7之类的较新版本,特别是如果您只是在制作原型。

我不知道为什么您的代码无法捕获所有数据库更改。它无法处理哪些特定更改?

(也没有直接关系,但是此代码extremely效率低下。您应该查看已更改文档的列表,并且仅更新已更改文档的数据模型,而不是每次都扫描整个数据库时间。]

© www.soinside.com 2019 - 2024. All rights reserved.