我正在尝试创建一个可填写的并在后台线程上运行它,但是当我订阅Action
run()
的{{1}}
基本上我想通过RxAndroid执行以下操作:
Schedulers.io()
使用RxAndroid我正在做以下事情:
Thread t = new Thread(new Runnable() {
public void run() {
doSomething();
}
});
t.start();
如果我 Completable.fromAction(new Action() {
@Override
public void run() throws Exception {
doSomething();
}
}).subscribeOn(Schedulers.io());
,则run()
方法不会被调用,但如果我执行Schedulers.io()
则会调用它。
当我订阅subscribe()
时,我无法找到它正在运行的原因。
答案 0 :(得分:6)
Stream只有在订阅后才会执行。这意味着,您的完成表应按订单run()
方式进行订阅。 subscribeOn()
不订阅该流,它只是告诉订阅哪个帖子。
在您的示例中,只需将subscribe()
添加到结尾即可启动run()
方法:
Completable.fromAction(new Action() {
@Override
public void run() throws Exception {
doSomething();
}
})
.subscribeOn(Schedulers.io())
.subscribe(...);