据我所知,rxjava-android在一个单独的线程上执行操作(当提供正确的调度程序时),导致非阻塞操作,但是快速而肮脏的测试似乎证明这是不正确的.
我使用了以下代码片段,在两种情况下,UI都被阻止了......
片段1
Observable observable = Observable.create(new Observable.OnSubscribe<Object>() {
@Override
public void call(Subscriber<? super Object> subscriber) {
int i = 0;
while (i == 0) {}
subscriber.onCompleted();
}
});
observable.subscribeOn(Schedulers.newThread());
observable.observeOn(AndroidSchedulers.mainThread());
observable.subscribe();
Run Code Online (Sandbox Code Playgroud)
片段2
Observable observable = Observable.create(new Observable.OnSubscribe<Object>() {
@Override
public void call(Subscriber<? super Object> subscriber) {
SystemClock.sleep(5000);
subscriber.onCompleted();
}
});
observable.subscribeOn(Schedulers.newThread());
observable.observeOn(AndroidSchedulers.mainThread());
observable.subscribe();
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么吗?
zsx*_*ing 29
错误是你使用了错误Observable.正确的代码应该是:
Observable observable = Observable.create(new Observable.OnSubscribe<Object>() {
@Override
public void call(Subscriber<? super Object> subscriber) {
int i = 0;
while (i == 0) {}
subscriber.onCompleted();
}
});
observable.subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()).subscribe();
Run Code Online (Sandbox Code Playgroud)
双方subscribeOn并observeOn返回一个新的可观察它实现其功能.但原始的Observable没有被修改.实际上,每个操作员总是会创建一个新的Observable而不修改原始的Observable.
| 归档时间: |
|
| 查看次数: |
4429 次 |
| 最近记录: |