其實我自己使用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
答案