Я использую RxJava и RxAndroid, и я хочу объединить два наблюдаемых, но между ними мне нужно обновить интерфейс, поэтому я должен выполнить код в основном потоке до достигает подписчика.RxJava, выполнить код в потоке наблюдателя перед цепочкой двух наблюдаемых
Одно из решений, вместо того, чтобы использовать flatmapping (это принятый термин?) Два наблюдаемых, было бы вызвано следующим наблюдаемым в подписчике сразу после обновления пользовательского интерфейса, но я чувствую, что должно быть более элегантное решение, например:
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
Вам нужно будет использовать функцию watchOn и указать планировщик – dwursteisen
Спасибо, так что это означает, что все, что я запускаю на doOnNext, будет работать в том же потоке, что и у подписчика. – Pnikosis