我正在使用couchbase lite上的复制拉动的动态通道。 如果我使用单个复制对象,我需要先停止,然后启动。如果拉动正在运行那就是问题。如何解决这个问题。我怎么知道是拉跑。有没有办法创建多个复制对象?
答案 0 :(得分:0)
使用Replication 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/