Android RxJava,非阻塞?

Android RxJava,非阻塞?,android,rx-java,Android,Rx Java,据我所知,rxjava android在一个单独的线程上执行操作(如果提供了正确的调度程序),从而导致非阻塞操作,但是一个快速而肮脏的测试似乎证明这是错误的 我使用了以下代码片段,在这两种情况下,UI都被阻止 片段1 Observable observable = Observable.create(new Observable.OnSubscribe<Object>() { @Override public void call(Subscriber<? super O

据我所知,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();
Observable-Observable=Observable.create(new Observable.OnSubscribe()){
@凌驾

公共无效呼叫(用户错误在于您使用了错误的
可观察的
。正确的代码应为:

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();
Observable-Observable=Observable.create(new Observable.OnSubscribe()){
@凌驾

public void call(subscriber确切地说,关键是链接方法,它类似于桌面环境中的“AndroidSchedulers.mainThread()”?您是指Swing吗?请参阅
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();