Я пытаюсь создать Observable
таким образом, чтобы он загружал некоторые данные из сети с интервалом и всякий раз, когда пользователь обновляет страницу. Это суть того, что у меня есть до сих пор:
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
запускается из интервала?