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