指定一個觀察者在哪個調(diào)度器上觀察這個Observable
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/observeOn.c.png" alt="observeOn" />
很多ReactiveX實現(xiàn)都使用調(diào)度器 "Scheduler"來管理多線程環(huán)境中Observable的轉(zhuǎn)場。你可以使用ObserveOn操作符指定Observable在一個特定的調(diào)度器上發(fā)送通知給觀察者 (調(diào)用觀察者的onNext, onCompleted, onError方法)。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/observeOn.e.png" alt="observeOn" />
注意:當(dāng)遇到一個異常時ObserveOn會立即向前傳遞這個onError終止通知,它不會等待慢速消費的Observable接受任何之前它已經(jīng)收到但還沒有發(fā)射的數(shù)據(jù)項。這可能意味著onError通知會跳到(并吞掉)原始Observable發(fā)射的數(shù)據(jù)項前面,正如圖例上展示的。
SubscribeOn操作符的作用類似,但它是用于指定Observable本身在特定的調(diào)度器上執(zhí)行,它同樣會在那個調(diào)度器上給觀察者發(fā)通知。
RxJava中,要指定Observable應(yīng)該在哪個調(diào)度器上調(diào)用觀察者的onNext, onCompleted, onError方法,你需要使用observeOn操作符,傳遞給它一個合適的Scheduler。