Я пытаюсь создать Observable
так, чтобы он загружал некоторые данные из сети с интервалом и всякий раз, когда пользователь обновляет страницу. Это суть того, что я до сих пор:RxAndroid Наблюдаемый запуск на неожиданной теме
PublishSubject<Long> refreshSubject = PublishSubject.create();
Observable<MyDataType> observable = Observable.merge(
Observable.interval(0, 3, TimeUnit.SECONDS),
refreshSubject
)
.flatMap(t -> {
// network operations that eventually return a value
// these operations are not observables themselves
// they are fully blocking network operations
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(data -> {
// update ui with data
}, error -> {
// do something with error
});
Позже в обновления обратного вызова у меня есть:
refreshSubject.onNext(0L);
Он работает на интервале штрафа, однако, когда я обновить, она взрывается с NetworkOnMainThreadException
, Я думал, что обработал это с помощью subscribeOn
/observeOn
. Что мне не хватает? Кроме того, почему это не приводит к сбою, когда Observer
запускается из интервала?
Ваше предложение работал, но я немного смущен этим утверждением: «С onNext() этого PublishSubject вызывается внутри интерьера. Наблюдается первым, прежде чем результат будет доставлен в вашу подписку ». Что такое "intern Observable"? – mrobinson7627