私のアプリケーションでIBM Cloudantを使用しています。私のリモートDBに接続するために、私はこのライブラリを使用しました:https://github.com/cloudant/sync-android 。 Androidで連続レプリケーションを有効にしようとしていますが、有効にする方法を見つけることができません。これは私が使用しているコードです:Cloudant continuos replication Android
File path = getApplicationContext().getDir("datastores", Context.MODE_PRIVATE);
DatastoreManager manager = new DatastoreManager(path.getAbsolutePath());
try {
Datastore ds = manager.openDatastore("mydatabase");
IndexManager indexManager = new IndexManager(ds);
URI uri = new URI(myuri);
// Create a replicator that replicates changes from the remote
// database to the local datastore.
Replicator replicator = ReplicatorBuilder.pull().from(uri).to(ds).build();
// Use a CountDownLatch to provide a lightweight way to wait for completion
CountDownLatch latch = new CountDownLatch(1);
Listener listener = new Listener(latch);
replicator.getEventBus().register(listener);
replicator.start();
latch.await();
replicator.getEventBus().unregister(listener);
if (replicator.getState() != Replicator.State.COMPLETE) {
System.out.println("Error replicating FROM remote");
System.out.println(listener.error);
}
} catch (DatastoreException datastoreException) {
System.err.println("Problem opening datastore: "+datastoreException);
} catch (Exception documentException) {
System.err.println("Problem: "+documentException);
}
をし、リスナーは次のように定義されています
CBLReplication *pullReplication = [_cblDatabase createPullReplication:synchronizationURL];
//THIS IS THE PART THAT I WOULD LIKE TO HAVE IN ANDROID
pullReplication.continuous = YES;
[pullReplication start];
付:
private class Listener {
private final CountDownLatch latch;
public ErrorInfo error = null;
public int documentsReplicated;
public int batchesReplicated;
Listener(CountDownLatch latch) {
this.latch = latch;
}
@Subscribe
public void complete(ReplicationCompleted event) {
this.documentsReplicated = event.documentsReplicated;
this.batchesReplicated = event.batchesReplicated;
latch.countDown();
}
@Subscribe
public void error(ReplicationErrored event) {
this.error = event.errorInfo;
latch.countDown();
}
}
は、IOSでは、私は同様のコードを使用しています私のコード、リモートdbはデバイス上でローカルに複製されますが、2つのdbは連続的に同期されません。クラウドコンソール上で何かを修正すると、変更はデバイスに伝播されません(代わりにiOSでは正しく同期されます)。
Androidにもこのオプションを追加する方法はありますか?