Я понял, что rxjava-android выполняет операции над отдельным потоком (при условии правильного планировщика), что приводит к неблокирующим операциям, однако быстрый и грязный тест, похоже, доказывает, что это неверно.
Я использовал следующие фрагменты кода, и в обоих сценариях пользовательский интерфейс блокировался...
Фрагмент 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();
Фрагмент 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();
Я что-то пропустил?