其实我自己使用combineLatest()
解决了这个问题。 retrySubject不需要知道以前的意图的内容。
class MyViewActivity extends MviActivity<MyView, MyViewState> implements MyView {
PublishSubject<Boolean> retrySubject = ... ; // fires on retry Button click
...
@Override
public Observable<String> searchIntent(){
Observable<String> searchObservable = RxSearchView.queryTextChanges(searchView);
return Observable.combineLatest(searchObservable,retrySubject(searchString, retryClicked) -> searchString);
}
}
有一点要注意。 combineLatest()仅在所有观察者订阅它们后发出第一个项目时才发射项目。这就是为什么我需要在Mosby订阅之后初始化重试。
@Override
protected void onStart() {
super.onStart();
retrySubject.onNext(true);
}
还请查看从@sockeqwe在Github
答案