在第一次重复之后,在另一个线程中观察到repeatWhen可观察到

时间:2018-03-14 13:08:14

标签: java android multithreading reactivex

我在Android中使用ReactiveX。我写了这段代码:

()

预期的结果是记录"已订阅"然后"接下来收到",并在无限期三秒后重复。 发生这种情况,但我的问题是Observable.just(true) .doOnSubscribe(() -> Log.d("MyApp", "Subscribed")) .repeatWhen(it -> it.delay(3, TimeUnit.SECONDS)) .subscribe(next -> Log.d("MyApp", "Next received")); 命令从第二次开始在计算线程中执行。

Log.d接受repeatWhen参数。但我想在原始主题中运行。

由于

1 个答案:

答案 0 :(得分:0)

我想出了如何解决它。

"延迟"运算符默认在计算线程中运行,但是可以通过参数传递它应该运行的线程。

Observable.just(true)
        .doOnSubscribe(() -> Log.d("MyApp", "Subscribed"))
        .repeatWhen(it -> it.delay(3, TimeUnit.SECONDS, Schedulers.immediate()))
        .subscribe(next -> Log.d("MyApp", "Next received"));