>我正在尝试创建一个可完成的并在后台线程上运行它,但是当我订阅Schedulers.io()
时,它没有调用Action
的run()
基本上我想通过RxAndroid执行以下操作:
Thread t = new Thread(new Runnable() {
public void run() {
doSomething();
}
});
t.start();
使用RxAndroid,我正在执行以下操作:
Completable.fromAction(new Action() {
@Override
public void run() throws Exception {
doSomething();
}
}).subscribeOn(Schedulers.io());
如果我这样做run()
方法不会被调用Schedulers.io()
,但是如果我这样做,它就会被调用subscribe()
。
当我订阅Schedulers.io()
时,我找不到它为什么运行。
Stream 只有在订阅后才会执行。这意味着,您的可完成对象应该被订阅run()
以便执行方法。 subscribeOn()
不订阅流,它只是告诉订阅哪个线程。
在您的示例中,只需在末尾添加subscribe()
即可启动要调用run()
方法:
Completable.fromAction(new Action() {
@Override
public void run() throws Exception {
doSomething();
}
})
.subscribeOn(Schedulers.io())
.subscribe(...);