いくつかの条件が満たされるまで、observableを実行する方法を見つけようとしています。Rx Java Observableが何らかの条件まで実行します。
は、次の例を考えてみましょう:
myDelayedObservable = createListenerObserver();
public Observable<Boolean> createListenerObserver() {
// The part I am looking for
}
ViewTreeObserver.OnGlobalLayoutListener listenerLayout = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
myDelayedObservable.onCompleted();
getTargetView().getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
};
public void performMultipleRequests() {
Observable<Boolean> longRunningTask = Observable.zip(oneRequest, anotherRequest, myDelayedObservable,...);
}
だからアイデアはとてもlongRunningTask
は、私の場合は場合にのみ、すべての要求に加えて、リスナーを(完了、zip
を使用して一緒にmyDelayedObservable
で、例えば、ダウンロード要求を複数の要求を実行することです完成したレイアウトを表示する)が完了する。
しかし問題は、リスナー用にObservableを作成する正しい方法を見つけることができないことです。これは、擬似コードので
while(!viewIsLaidOut) {
// just wait
}
observable.complete();
// After that `longRunningTask` should be completed
は、これを達成するための正しい方法を提案してください、私は約Future
、Callable
考えているが、これは私にとって最善の解決策ではないようだ、バリアのようなものです。
' myDelayedObservable'それは任意の値、または単に完全に放出する必要がありますか? 'longRunningTask'についても同じ質問です。実際には 'oneRequest'、' anotherRequest'の結果を使用しますか? –
返信いただきありがとうございます。実際には値を返す必要はありません。私は 'longRunnningTask'が完了したときにすべてが完了したことを確認するために、障壁にする必要があります。 – brqgddez
実際に 'oneRequest'、' anotherRequest'の結果を使用していますか? –