码迷,mamicode.com
首页 > 编程语言 > 详细

rxjava源码解析:操作符subscribeOn

时间:2016-01-13 10:54:31      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

1.subscribe流程

先看一个简单的例子:

//标记为Observable1
Observable.create(new Observable.OnSubscribe<String>() {
        @Override
        public void call(Subscriber<? super String> subscriber) {
            subscriber.onNext("hello world!");
            subscriber.onCompleted();
        }
    })
    .subscribeOn(Schedulers.newThread())

    //Subscriber标记为Subscriber1
    .subscribe(new Subscriber<String>() {
        @Override
        public void onCompleted() {
        }

        @Override
        public void onError(Throwable e) {

        }

        @Override
        public void onNext(String s) {

        }
    });

 

subscribeOn的流程如下:

技术分享

 

  1. 首先会根据原来的Observable1生成一个新的Observable<Observable<String>>我们命名为Observable2
  2. 然后调用Observable2.lift(OperatorSubscribeOn);
  3. 返回调用lift之后生成的新的Observable3. subscribeOn过程执行完毕

subscribe()过程跟之前分析的的一样。 注意:

  1. Observable<Observable<String>>2中onSubscribe中的call()方法,返回的是Observable1
  2. OperatorSubscribeOn中生成的Subscriber2对象负责把Observable<Observable<String>>2发射的Observable1跟Subsriber1关联调用

现在分析OperatorSubscribeOn生成的Subscriber2

 

技术分享

  1. Subscriber2中调用scheduler创建不同的调度器的worker
  2. worker调用schedule()去执行Observable1的subscribe()
  3. Observable1的subscribe()方法中的Subscriber<String>调用了Subscriber1<String>中的onNext() onCompleted()等。

完毕

 

rxjava源码解析:操作符subscribeOn

标签:

原文地址:http://www.cnblogs.com/liulipeng/p/5126442.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!