0
私はCouchDBaseLite 1.4経由で接続しているCouchDBを持っています。私は、アプリケーションを続行する前に、すべてのドキュメントが引っ張られるのを待つのに問題があります。CouchbaseLiteはプルレプリケーションが完了するまで待ちます
現在、私は非常にハッキーな方法でこれを達成しており、適切なコーディング基準に沿って改善するように修正したいと考えています。
電流:
pull.setContinuous(false);
pull.start();
//Waits for pull replication to start pulling in data
while(!pull.isRunning());
//Waits for pull replication to finish.
while(!pull.getStatus().equals(Replication.ReplicationStatus.REPLICATION_STOPPED));
//Set continuous to true
pull.setContinuous(true);
//Start it again.
pull.start();
私はこれをやっている理由は、私は潜在的に、私は、彼らはアプリがセットアップモードに入るデスクトップを提示されていない場合は、待つ必要があるDBで2つの文書を持っています。
- ハックダブル
while
なし を引っ張っ完了するために、すべての文書を待つ方法はありますか? - さらに、ドキュメントの
_id
を知っていると仮定してください。続行する前に両方が引かれるまで待つ方法はありますか?
これは、 'changeListener'がメインスレッドの実行を止めないので、これは私の問題を正確に解決しません。私はあなたの2番目の提案に行き、ワンショット複製を使用して2つのドキュメントを取得しました。今すぐ目に見えるほど速く走ります。私はまだ二重引用符を使用していましたが、私は2つのドキュメントを待っているだけなので、コードが醜い場合でも一時停止は最小限で容認できます。 –
ああ、私は通常、ノンブロッキングの言葉で考える。他にもいくつかの考えがあります:コールバックでコールを介してメイン実行を取り出すか、スレッドをスリープ状態にしてコールバックから通知しますか? – Hod