6
我觉得有人必须尝试过这一点,但如果可观察时间过长,我无法找出一个很好的方法去做某件事。如果RxJava observable需要很长时间,你如何显示Spinner?
这是我想要的流程。
Start a search.
If the search takes longer than some time,
show a spinner or show progress bar.
When finished do subscription action and hide spinner/progress bar.
的我能想到的最接近的是像邮编
manager.search(searchTerm)
.zip(Observable.Timer(1, TimeUnit.SECONDS))
.subscribe(
// if the search is non null then we are good
// if the long time is non 0 we need to show spinner
);
有什么好做?我一整天都在努力,但没有成功。在一个完美的世界,我觉得我会想是
manager.search(searchTerm)
.timeout(i -> /* do timeout stuff */, 1, TimeUnit.SECONDS)
.subscribe(item -> /* do search result stuff */);
来自'BlockingObservable'文档:“但是对于生产应用程序来说通常是不合适的(如果你认为你需要使用BlockingObservable,这通常表明你应该重新考虑你的设计)。”那么何时使用阻塞observable是适当的,什么时候不适用? – Than
我会说在某些情况下可以使用BlockingObservable,当它真的提高了代码的可读性时。 – scana
我在此处使用'BlockingObservable'进行演示,以便在查看所有的印制线之前应用程序不会退出。在制作中,你只是不要调用'toBlocking'就是这样。 – akarnokd