Rx java 如何在x秒后开始观察

Rx java 如何在x秒后开始观察,rx-java,deferred,Rx Java,Deferred,在10秒后开始观察的最好方法是什么 Single<Boolean> init(); public void onStart() { init().subscribe(getMySubscriber()) } singleinit(); public void onStart(){ init().subscribe(getMySubscriber()) } 我想让实际的工作在订阅后10秒后开始。可观察。timer()是您需要的 Observable

在10秒后开始观察的最好方法是什么

Single<Boolean> init();

public void onStart() {
    init().subscribe(getMySubscriber())
}
singleinit();
public void onStart(){
init().subscribe(getMySubscriber())
}
我想让实际的工作在订阅后10秒后开始。

可观察。timer()
是您需要的

Observable
            .timer(10L, TimeUnit.SECONDS)
            .subscribe(aLong -> init());

使用
delaySubscription
延迟对现有源的订阅:

Single.just(1)
   .delaySubscription(10, TimeUnit.SECONDS)
   .subscribe(System.out::println);
如果您的
init()
方法本身在返回单个之前有副作用,您可以使用
Single.defer
对其进行包装,并且上述结构仍应有效:

Single.defer(() -> init())
    .delaySubscription(10, TimeUnit.SECONDS)
    .subscribe(System.out::println);