如何在 rxjava 中从延迟订阅开始挂钩观察

How hook observable starting on delayed subscription in rxjava

可用性: 当用户按下按钮时,搜索在 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));

问题: 我无法挂钩启动 observable 的执行。
如何最好地解决问题?或者其他解决方案?

我找到了解决方案。
我创建 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);