android 我可以延迟RxJava中的onSuccess方法吗?

bz4sfanl  于 2022-12-28  发布在  Android
关注(0)|答案(1)|浏览(133)

我有SplashScreenFragment,在这个片段中,我将使用RetrofitRxJava从服务器加载数据,从服务器获取数据将需要1秒到25秒。
SplashScreenFragment必须向用户显示至少8秒。
从服务器获取数据时,将调用onSuccess方法,在此onSuccess方法中,我将用户导航到HomeFragment

让我们举一个例子来了解我到底想要什么:
**第一个场景:**当我打开应用程序时,SplashScreenFragment将启动并从服务器获取数据,假设从服务器获取数据花费了1秒,在这种情况下,它不能使用onSuccess方法调用,应等待7秒,之后,它必须调用onSuccess方法
**第二个场景:**当我打开应用程序时,SplashScreenFragment将启动,并从服务器获取数据,假设从服务器获取数据花费了3秒,在这种情况下,它不能使用onSuccess方法调用,应等待5秒,之后,它必须调用onSuccess方法
**第三个场景:**当我打开应用程序时,SplashScreenFragment将启动,它将从服务器获取数据,假设从服务器获取数据花费了12秒,在这种情况下,必须直接使用onSuccess方法调用,而无需等待。

我可以这样做,但是如果没有RxJava,我想知道RxJava中是否有方法根据上述条件延迟onSuccess方法?

dgtucam1

dgtucam11#

用8秒计时器关闭:

Single<Data> datasource = ...

datasource.zipWith(Single.timer(8, TimeUnit.SECONDS), (a, b) -> a)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(data -> { }, error -> { });

相关问题