我正在尝试用 RxJava 替换我的 Handler 方法。
我的要求:
I want to call the method getTransactionDetails() only after 5 seconds.
这是我使用 Handler 的工作代码:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
getTransactionDetails();
}
}, 5000);
Rx java 代码 - 它不工作:
Observable.empty().delay(5000, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(o -> getTransactionDetails())
.subscribe();
最佳答案
我会这样做:
Completable.timer(5, TimeUnit.SECONDS, AndroidSchedulers.mainThread())
.subscribe(this::getTransactionDetails);
一个 Completable表示没有值但指示完成或异常的延迟计算。静态方法调用timer()
返回一个 Completable
表示在指定时间段过去后完成,并且 subscribe()
调用将意味着方法 getTransactionDetails()
将计时器触发时在当前对象上调用。通过提供 Scheduler
作为 Completable.timer()
的最后一个参数,您可以控制使用哪个线程来执行 getTransactionDetails()
。
关于android - 如何使用rxjava在android中延迟后调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42122041/