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)
}
上面的代码有时无法触发…如果我想从数据库中获取所有更改事件,该怎么办?
版本1.4.4已有数年历史;您确实应该使用2.7之类的较新版本,特别是如果您只是在制作原型。
我不知道为什么您的代码无法捕获所有数据库更改。它无法处理哪些特定更改?
(也没有直接关系,但是此代码extremely效率低下。您应该查看已更改文档的列表,并且仅更新已更改文档的数据模型,而不是每次都扫描整个数据库时间。]