如何在后台线程中执行此代码?
.subscribeOn(Schedulers.computation())
onNext()
{
touchEverythingInTheUiThreadFromBackgroundThread();
}
答案 0 :(得分:1)
如果您想确保在指定的计划程序上执行.doOnNext()
,请将.subscribeOn()
更改为.observeOn()
。直觉.observeOn()
确定用于之后的所有事件的调度程序。
.subscribeOn()
仅影响用于运行可观察创建的onSubscribe()
方法的调度程序。以后发生的事情在很大程度上取决于您订阅的内容或@akarnokd所说的:您的活动来源是什么。假设将在.subscribeOn()
中指定的调度程序上发出项目是不安全的。实际上,至少有一些例子表明这些假设并不成立。
答案 1 :(得分:0)
使用
Observable.fromCallable(() -> Thread.currentThread().getName())
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(name -> Timber.d("Worker thread: %s, Handle thread: %s", name, Thread.currentThread().getName()));