我有这个AsyncSubject
val asyncSubject = AsyncSubject.create<Int>()
observable.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribe(asyncSubject)
如果我在测试环境(androidTest文件夹)中做类似的事情
asyncSubject.subscribe{
// enter only in test environment
}
它仅在测试期间输入,但我在未输入的活动中运行了相同的代码。
使其在测试环境和正常环境下均可运行的唯一方法是删除:
.observeOn(Schedulers.newThread())
.subscribeOn(AndroidSchedulers.mainThread())
我做错了什么?
这些是我的依赖项:
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.8'
编辑:
它似乎仅在我尝试更改外部变量时才起作用。 一个例子:
val observable = Observable.just(1, 2, 3, 4, 5)
val asyncSubject = AsyncSubject.create<Int>()
observable.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(asyncSubject)
val signal = CountDownLatch(5)
var i = 0
asyncSubject.subscribe{
i = it
signal.countDown()
}
signal.await()
// After that `i` is always 0