0
我正在使用couchbase lite的複製拉動態通道。 如果我使用單個複製對象,我需要先停下來,然後開始。如果拉正在運行,那就是問題了。如何解決這個問題。我將如何知道拉運行。任何方式來創建多個複製對象?如果複製正在運行,如何添加通道?
我正在使用couchbase lite的複製拉動態通道。 如果我使用單個複製對象,我需要先停下來,然後開始。如果拉正在運行,那就是問題了。如何解決這個問題。我將如何知道拉運行。任何方式來創建多個複製對象?如果複製正在運行,如何添加通道?
使用複製ChangeListener。以下是一個監視複製停止的示例。
public class DBHelper implements Replication.ChangeListener {
private boolean replicationActive = false;
private List stateListeners = new ArrayList<>();
...
public interface ReplicationStateListener {
void onChange(boolean isActive);
}
public void startReplication(URL gateway, boolean continuous) {
...
pushReplication.addChangeListener(this);
pushReplication.start();
}
public void stopReplication() {
...
}
public void addReplicationStateListener(ReplicationStateListener listener) {
stateListeners.add(listener);
}
public void removeReplicationStateListener(ReplicationStateListener listener) {
stateListeners.remove(listener);
}
// Replication.ChangeListener
@Override
public void changed(Replication.ChangeEvent changeEvent) {
if (changeEvent.getError() != null) {
Throwable lastError = changeEvent.getError();
// React to the error
return;
}
if (changeEvent.getTransition() == null) return;
ReplicationState dest = changeEvent.getTransition().getDestination();
replicationActive = ((dest == ReplicationState.STOPPING || dest == ReplicationState.STOPPED) ? false : true);
stateListeners.forEach(listener -> listener.onChange(replicationActive));
}
}
你可以在這裏閱讀更多詳細信息:https://blog.couchbase.com/determining-status-replication-couchbase-lite/
爲什麼你需要停止複製?您是否按頻道過濾複製品?否則,你不應該需要。在運行時停止複製有什麼問題?你可以有多個複製對象,但我會確保你需要它們。 – Hod
我得到解決方案,重新啓動,繼續兩個渠道。無需停止,只需更改設置並重新啓動。 –