可用性:当用户按下按钮时,搜索在3000毫秒后开始。搜索开始时,应显示进度条。
我推迟订阅:
Observable<SearchResult> delayedSearch = search
.delaySubscription(3000, TimeUnit.MILLISECONDS)
//not working
.doOnSubscribe(() -> log(should appear progress bar))
delayedSearch.subscribe(result -> log(should disappear progress bar));
问题:我无法挂钩启动可观察的执行。
如何解决问题的最佳方法?或者可能是另一种解决方案?
答案 0 :(得分:2)
我找到了解决方案 我创建了showProgress observable:
Observable showProgress = Observable.create(subscriber -> {
log("showProgress")
subscriber.onNext(null);
subscriber.onCompleted();
}).subscribeOn(AndroidSchedulers.mainThread());
并在搜索前添加:
Observable<SearchResult> searchWithProgress = showProgress.flatMap((Func1) o -> search);
所以我可以这样使用它:
Observable<SearchResult> delayedSearch = searchWithProgress.delaySubscription(3000, TimeUnit.MILLISECONDS);
delayedSearch.subscribe(result -> log(hideProgress);