我可以延迟 RxJava 中的 onSuccess 方法吗?
Can I delay the onSuccess method in RxJava?
我有 SplashScreenFragment
并且在这个片段中,我将使用 Retrofit
和 RxJava
从服务器加载数据,从服务器获取数据需要 1 秒到25秒。
SplashScreenFragment
必须向用户显示至少 8 秒。
当我从服务器获取数据时,将调用 onSuccess
方法,在此 onSuccess
方法中,我会将用户导航到 HomeFragment
让我们举个例子来理解我到底想要什么:
第一个场景: 当我打开应用程序时,SplashScreenFragment
将启动并从服务器获取数据,假设需要 1 秒从服务器获取数据,在这种情况下,一定不能调用onSuccess
方法,应该等待7秒后,必须调用onSuccess
方法
第二种情况: 当我打开应用程序时,SplashScreenFragment
将启动并从服务器获取数据,假设需要 3 秒从服务器获取数据,在这种情况下,它不能调用onSuccess
方法,应该等待5秒,然后,它必须调用onSuccess
方法
第三种情况: 当我打开应用程序时,SplashScreenFragment
将启动并从服务器获取数据,假设需要 12 秒从服务器获取数据,这种情况下,必须直接调用onSuccess
方法,无需等待。
我可以,但是没有RxJava
,我想知道RxJava
中有没有什么方法可以根据上述条件延迟onSuccess
方法?
用 8 秒计时器压缩它:
Single<Data> datasource = ...
datasource.zipWith(Single.timer(8, TimeUnit.SECONDS), (a, b) -> a)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(data -> { }, error -> { });
我有 SplashScreenFragment
并且在这个片段中,我将使用 Retrofit
和 RxJava
从服务器加载数据,从服务器获取数据需要 1 秒到25秒。
SplashScreenFragment
必须向用户显示至少 8 秒。
当我从服务器获取数据时,将调用 onSuccess
方法,在此 onSuccess
方法中,我会将用户导航到 HomeFragment
让我们举个例子来理解我到底想要什么:
第一个场景: 当我打开应用程序时,SplashScreenFragment
将启动并从服务器获取数据,假设需要 1 秒从服务器获取数据,在这种情况下,一定不能调用onSuccess
方法,应该等待7秒后,必须调用onSuccess
方法
第二种情况: 当我打开应用程序时,SplashScreenFragment
将启动并从服务器获取数据,假设需要 3 秒从服务器获取数据,在这种情况下,它不能调用onSuccess
方法,应该等待5秒,然后,它必须调用onSuccess
方法
第三种情况: 当我打开应用程序时,SplashScreenFragment
将启动并从服务器获取数据,假设需要 12 秒从服务器获取数据,这种情况下,必须直接调用onSuccess
方法,无需等待。
我可以,但是没有RxJava
,我想知道RxJava
中有没有什么方法可以根据上述条件延迟onSuccess
方法?
用 8 秒计时器压缩它:
Single<Data> datasource = ...
datasource.zipWith(Single.timer(8, TimeUnit.SECONDS), (a, b) -> a)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(data -> { }, error -> { });