android - 如何使用rxjava在android中延迟后调用方法?

标签 android rx-java

我正在尝试用 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/

相关文章:

android - 如何使用 Android 加速度计检测步行

android - Ubuntu:安卓设备调试

android - RxJava2 在 Observable/Completed 完成或处置时获取事件

android - fragment 旋转后如何不第二次调用 subscribe() 主体?

rx-java - RxJava : How to to execute a task every 5 seconds only if the last task finished

android - 同步两个水平 ScrollView android

android - 将 .java 文件作为 Java 源文件包含在 Android Studio 中,以删除带有 "J"的红色圆圈

android - 使用设计支持库时如何将汉堡包图标动画化为后退箭头?

java - RxJava - Observable 的 zip 列表如果抛出异常如何获得成功响应

rx-java - RxJava 主题不使用 .repeat() 重复?