Я использую Couchbase Lite с Android. У меня есть документ, по которому мне нужно добавить Document.ChangeListener (для обновления пользовательского интерфейса при каждом изменении этого документа).Document.ChangeListener удалены в Couchbase Lite
Я добавляю его, но он кажется удаленным «автоматически», и я не могу понять, почему. У меня есть метод «attachDocumentChangeListener», что я называю:
public void attachDocumentChangeListener(String documentId, final DocumentChangeListener<TData> listener) {
getDefaultDatabase().getDocument(documentId).addChangeListener(listener);
}
Я не трогаю мое устройства больше, и я сделать обновление на документе с помощью другого устройства. Это должно вызвать ChangeEvent, но похоже, что этого не происходит.
Я заметил, что, когда документ обновлен, документ не имеет ChangeListener
(даже если я добавил один раз раньше). Чтобы проверить, когда удаляется ChangeListener
, я добавил точку останова для функции removeChangeListener(ChangeListener changeListener)
из класса Document
, но она никогда не вызывалась, а поле changeListeners
было по-прежнему пустым при обновлении ревизии.
Я добавил еще одну точку останова, точку наблюдения за полем на changeListeners
. Вот скриншот конфигурации этой точки останова:
И я повторил операцию (обновление документа с другим устройством), но я не видел ничего, кроме журналов, которые показывают ChangeListener была удалена (не зная, как)
{[email protected]}.changeListeners will be accessed at com.couchbase.lite.Document.addChangeListener(Document.java:169)
size : 0, ID : 8980450c-5ddb-4181-a7bf-3e162c67a68f
{[email protected]}.changeListeners will be accessed at com.couchbase.lite.Document.addChangeListener(Document.java:169)
size : 1, ID : 8980450c-5ddb-4181-a7bf-3e162c67a68f
{[email protected]}.changeListeners will be accessed at com.couchbase.lite.Document.addChangeListener(Document.java:169)
size : 0, ID : 8980450c-5ddb-4181-a7bf-3e162c67a68f
{[email protected]}.changeListeners will be accessed at com.couchbase.lite.Document.revisionAdded(Document.java:598)
size : 0, ID : 8980450c-5ddb-4181-a7bf-3e162c67a68f
{[email protected]}.changeListeners will be accessed at com.couchbase.lite.Document.revisionAdded(Document.java:598)
size : 0, ID : 8980450c-5ddb-4181-a7bf-3e162c67a68f
Мы можем видеть, что removeChangeListener
никогда не было названо, но changeListeners
размер был установлен в 0.
Любой может помочь?