I have this question in viewmodel:
private PublishSubject<String> articleSubject;
public Observable<Article> newArticleSubject() {
articleSubject = PublishSubject.create();
return articleSubject.flatMap(new Func1<String, Observable<Article>>() {
@Override
public Observable<Article> call(String articleId) {
return dataModel.getArticleById(articleId).subscribeOn(Schedulers.newThread());
}
});
}
I snap the view as follows:
viewModel.newArticleSubject()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new ArticleSubscriber());
And this is my subscriber:
private class ArticleSubscriber extends Subscriber<Article> {
@Override
public void onCompleted() {
Log.d("test", "This is not ever printed");
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Article article) {
}
}
onCompletednever called, but onErroralso onNext. What for? Inside dataModel.getArticleById(articleId)called subscriber.onCompleted();.
source
share