我是RxJava的新手,并尝试在Android中构建模型视图意图模式。在我的视图(活动)中,我创建一个PublishProcessor,如下所示:
private PublishProcessor<MviResultIntent> mPublishProcessor;
mPublishProcessor = PublishProcessor.create();
创建之后,我正在调用我的演示者的方法,将处理器作为参数:
mResultPresenter.bindIntents(mPublishProcessor);
调用方法内部会发生什么:
Disposable processIntents = mPublishProcessor
.subscribeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableSubscriber<MviResultIntent>() {
@Override
public void onNext(MviResultIntent mviResultIntent) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
//may be ignored
}
});
mCompositeDisposable.add(processIntents);
然后在我的View Class中调用:
mPublishProcessor.onNext(new MviResultIntent.ProductsIntent());
我的Presenter中的PublishProcessor没有得到我试图触发的onNext事件。我错过了什么吗?我也没有收到onComplete或onError。
任何帮助表示赞赏!如果您需要任何进一步的信息,请随时询问。在此先感谢您的帮助!
答案 0 :(得分:0)
我发现我无法在主线程上的非Android类中订阅。当我改变
.subscribeOn(AndroidSchedulers.mainThread())
到
.subscribeOn(Schedulers.io())
它有效。