use*_*005 3 multithreading android rx-java rx-android android-thread
我想创建一个completable并在后台线程中运行它,但它不是打电话Action的run()时候,我就订阅Schedulers.io()
基本上我想通过RxAndroid执行以下操作:
Thread t = new Thread(new Runnable() {
public void run() {
doSomething();
}
});
t.start();
Run Code Online (Sandbox Code Playgroud)
使用RxAndroid,我正在执行以下操作:
Completable.fromAction(new Action() {
@Override
public void run() throws Exception {
doSomething();
}
}).subscribeOn(Schedulers.io());
Run Code Online (Sandbox Code Playgroud)
它的run()方法是没有得到所谓的如果我这样做Schedulers.io(),但如果我这样做会被调用subscribe()。
订阅时,我找不到它为什么运行Schedulers.io()。
流只有在已订阅的情况下才会执行。这意味着,应将您的completable订阅以便run()执行命令方法。subscribeOn()并没有订阅流,它只是告诉哪个线程进行订阅。
在您的示例中,只需添加subscribe()到末尾即可初始化run()要调用的方法:
Completable.fromAction(new Action() {
@Override
public void run() throws Exception {
doSomething();
}
})
.subscribeOn(Schedulers.io())
.subscribe(...);
| 归档时间: |
|
| 查看次数: |
1261 次 |
| 最近记录: |