【问题标题】:RxJava Scheduler to observe on main thread在主线程上观察的 RxJava 调度程序
【发布时间】:2019-07-12 23:29:29
【问题描述】:

如果我写这样的东西,那么操作和通知都将在当前线程上......

Observable.fromCallable(() -> "Do Something")
    .subscribe(System.out::println);

如果我像这样在后台线程上执行操作,那么操作和通知都将在后台线程上...

Observable.fromCallable(() -> "Do Something")
    .subscribeOn(Schedulers.io())
    .subscribe(System.out::println);

如果我想在主线程上观察并在 Android 的后台执行操作,我会这样做...

Observable.fromCallable(() -> "Do Something")
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(System.out::println);

但是如果我正在编写一个标准的 Java 程序,你想在主线程上观察到的状态是什么?

【问题讨论】:

标签: java rx-java rx-java2


【解决方案1】:

对于 RxJava2,使用“blockingSubscribe()

Flowable.fromArray(1, 2, 3)
                .subscribeOn(Schedulers.computation())
                .blockingSubscribe(integer -> {
                    System.out.println(Thread.currentThread().getName());
                });

【讨论】:

    【解决方案2】:

    通过.toBlocking()Observable 转换为BlockingObservable;这为您提供了等待完成、获取一项等的阻塞方法。

    【讨论】:

      猜你喜欢
      • 2015-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      • 2018-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多