如果复制正在运行,如何添加频道



我正在使用动态通道,以在Couchbase Lite处进行复制。如果我使用单个复制对象,则需要先停止,然后开始。如果拉动正在运行,那是问题。如何解决这个问题。我将知道如何拉动。有什么方法来创建复制的多个对象?

使用复制shangelistener。这是一个监视复制停止的示例。

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-replication-couchbase-lite/

最新更新