7
我正在使用RxJava和RxAndroid,並且我想組合兩個observable但在兩者之間需要更新UI,因此我必須在主線程中執行代碼之前達到訂戶。RxJava,在鏈接兩個observable之前在觀察器線程中執行代碼
一個解決方案,而不是flatmapping(是一個公認的術語?)兩個可觀察的事件,將更新UI後調用訂閱服務器中的下一個observable,但我覺得應該有一個更優雅的解決方案,如:
myObservable
.map(new Func1<Object, Object>() {
@Override
public Object call(Object object) {
/* do stuff on the main thread */
return object;
}
})
.flatMap(new Func1<Object, Observable<OtherObject>>() {
@Override
public Observable<OtherObject> call(Object o) {
return new MyOtherObservable(o);
}
})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread());
當然,可能地圖不是我需要在這裏使用的運算符。那麼,是否有運營商或更好的方式來實現這一目標?或者我錯過了觀察者應該如何工作的觀點?
這是在觀察者線程上調用?該文檔指出它不在特定的調度程序上運行。 – Pnikosis
您必須使用observeOn並指定調度程序 – dwursteisen
謝謝,可以肯定的是,這意味着我在doOnNext上運行的所有內容都將與訂戶在同一個線程中運行。 – Pnikosis