RxJava源码学习
冰冻火山
https://github.com/jelly-liu
展开
-
RxJava 源码解读分析 observeOn
Observable.observeOn()方法有点绕,我们一点一点看。从上图中,我们可以看出,observeOn主要作的工作是:1,通过指定的scheduler来切换线程,用来emit数据,这个数据就是onNext(data)方法的参数。2,emit出来的数据,先异步的缓存到一个buffer,实际上是缓存到了一个Queue中。3,通过指定的scheduler来异步的消费Q原创 2017-05-03 18:49:32 · 1055 阅读 · 0 评论 -
RxJava 源码解读分析 subscribeOn 方法
如下图,通过指定的scheduler.createWorker()方法,来获取一个工作线程,根据不同的scheduler策略,工作线程的产生方式也不一样,一般分为3类从threadPool中获取总是及时产生新线程总是利用当前线程详情看这里 RxJava 源码解读分析 Scheduler如下图,最终,还是在指定的线程中,调用了onSubscribe.call()方法。原创 2017-05-03 18:16:11 · 684 阅读 · 0 评论 -
RxJava 源码解读分析 Scheduler
RxJava 源码解读分析 入门篇 Scheduler 类图分析原创 2017-05-02 20:11:46 · 1707 阅读 · 0 评论 -
RxJava 源码解读分析 from
我们继续,看看observable.from()是怎么回事,from源码如下图。再来看看OnSubscribeFromArray这个类,如下图我们发现,OnSubscribeFromArray就是一个OnSubscribe,要实现了call()接口,call()方法中,只是设置了一个新的FromArrayProducer,再来看看child.setProducer()方法,原创 2017-05-04 18:05:45 · 725 阅读 · 0 评论 -
RxJava 源码解读分析 just
来看看RxJava Observable.just 方法,如下图:可以看出,大部分just()方法是直接调用from()方法,上一篇我们已经讲解过from()内容,这里我们主要看看just(T t)这个方法,如下图:看清楚了吧,我们这里说说SingleProducer和WeakSingleProducer。SingleProducer,用原创 2017-05-04 18:30:16 · 628 阅读 · 0 评论 -
RxJava 源码解读分析 defer
我们来看盾RxJava Observable.defer 方法,如下图:很清楚的可以看出,当有订阅者时,即调用了subscribe()方法时,执行OnSubscribe.call()方法时,才临时的创建一个Observable,再调用observable.unsafeSubscribe()方法。这就是所说的,延迟创建Observable。原创 2017-05-04 19:03:50 · 664 阅读 · 0 评论 -
RxJava 源码解读分析 map
我们来看盾RxJava Observable.map方法,先上一段示例代码:@Test public void test() throws InterruptedException { Observable.create((Subscriber subscriber)->{ log.debug("Observable, hello, rxjava原创 2017-05-08 11:33:01 · 564 阅读 · 0 评论 -
RxJava 源码解读分析 观察者模式
RxJava 图文分析 入门篇 观察者模式 生产者消费者模式 RxJava不太好理解,可以说很费解,我们先来梳理一下,整体上的一些概念。我找不到能比HeadFirst设计模式系列更好的,更有说服力的,插图,推荐大家也可看一看。先在最上层的设计模式这个层次上来看看观察者模式,如下图。其次,再从jdk这个稍微具体一点的层次,来看看观察者模式,如下图。细心的读者也许会发现,在观察者模式中,Subject和Observable是同一个原创 2017-04-26 18:12:19 · 1147 阅读 · 0 评论 -
RxJava 源码解读分析 flatMap
这一节,我们重点来分析RxJava.flatMap()方法内部是如何实现的先上一段测试代码,如下所示:@Test public void test2() throws InterruptedException { Observable.create(new Observable.OnSubscribe() { @Override原创 2017-05-09 20:33:34 · 650 阅读 · 0 评论