您当前的位置: 首页 >  Java

xiangzhihong8

暂无认证

  • 0浏览

    0关注

    1324博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

彻底搞清楚 RxJava 是什么东西

xiangzhihong8 发布时间:2016-07-30 22:21:48 ,浏览量:0

其实从rxjava14年出现到现在,我是去年从一个朋友那里听到的,特别是随着现在app项目越来越大,分层越来越不明确的情况下,rxjava出现了,以至于出现了rxandroid。其实如果你了解观察者模式的话,rxjava并没有你说的那么神秘。再次,我对rxjava并不崇拜,我的原则是怎么写代码简单,代码结构清晰,维护简单,就是好框架。

讲rxjava之前首先说一下Android mvp开发模式。

MVP的工作流程
  • Presenter负责逻辑的处理,
  • Model提供数据,
  • View负责显示。  作为一种新的模式,在MVP中View并不直接使用Model,它们之间的通信是通过Presenter来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller。

接下来说说rxjava

  • RxJava 到底是什么
  • RxJava 好在哪
  • API 介绍和原理简析
    • 1. 概念:扩展的观察者模式
      • 观察者模式
      • RxJava 的观察者模式
    • 2. 基本实现
      • 1) 创建 Observer
      • 2) 创建 Observable
      • 3) Subscribe (订阅)
      • 4) 场景示例
        • a. 打印字符串数组
        • b. 由 id 取得图片并显示
    • 3. 线程控制 —— Scheduler (一)
      • 1) Scheduler 的 API (一)
      • 2) Scheduler 的原理 (一)
    • 4. 变换
      • 1) API
      • 2) 变换的原理:lift()
      • 3) compose: 对 Observable 整体的变换
    • 5. 线程控制:Scheduler (二)
      • 1) Scheduler 的 API (二)
      • 2) Scheduler 的原理(二)
      • 3) 延伸:doOnSubscribe()
  • RxJava 的适用场景和使用方式
    • 1. 与 Retrofit 的结合
    • 2. RxBinding
    • 3. 各种异步操作
    • 4. RxBus
  • 最后
    • 关于作者:
    • 为什么写这个?
如果你要了解rxjava是什么,由来,以及作用和原理,请点击上面的链接。

针对上面的问题,我们简单的了解下一些基本的概念。

什么是rxJava
一种帮助你做异步的框架. 类似于 AsyncTask. 但其灵活性和扩展性远远强于前者. 从能力上讲, 如果说 AsycnTask 是 DOS 操作系统, RxJava 是 Window 操作系统。
rxJava的好处
异步操作很关键的一点是程序的简洁性,因为在调度过程比较复杂的情况下,异步代码经常会既难写也难被读懂。 Android 创造的AsyncTask 和Handler ,其实都是为了让异步代码更加简洁。RxJava 的优势也是简洁,但它的简洁的与众不同之处在于,随着程序逻辑变得越来越复杂,它依然能够保持简洁。
看下rxjava的例子

rxjava原理简析
我想大家听说过如下Java的都知道如下Java采用的是一种扩展的观察者模式实现的,何为观察者模式:观察者模式是一种一对多的依赖关系,当一个对象改变状态时,它会通知所有依赖者接受通知,并决定数据是否改变。
如果需要详细了解的请:http://blog.csdn.net/xiangzhihong8/article/details/52075547
但是rxjava和传统的观察者模式又不完全相同,传统的观察者模式是涉及到两个对象观察者(Observer )和被观察者(Observable )。观察者通过将被观察 的对象加到自己的观察队列中,当被观察者发生改变时,就会通知观察者东西已经改变。
而rxJava中涉及到4个概念:Observable (可观察者,即被观察者)、 Observer (观察者)、 subscribe (订阅)、事件。Observable 和Observer 通过 subscribe() 方法实现订阅关系,从而 Observable 可以在需要的时候发出事件来通知 Observer数据刷新。
注意:重点来了 
与传统观察者模式不同, RxJava 的事件回调方法除了普通事件 onNext() (相当于 onClick() / onEvent())之外,还定义了两个特殊的事件:onCompleted()
 和 onError()
  • onCompleted(): 事件队列完结。RxJava 不仅把每个事件单独处理,还会把它们看做一个队列。RxJava 规定,当不会再有新的onNext() 发出时,需要触发 onCompleted() 方法作为标志。
  • onError(): 事件队列异常。在事件处理过程中出异常时,onError() 会被触发,同时队列自动终止,不允许再有事件发出。
注意: 在一个正确运行的事件序列中, onCompleted() 和 onError() 有且只有一个,也就是说onCompleted() 和 onError() 二者也是互斥的。在响应的队列中只能调用一个。
rxjava事件处理的模型图:
rxjava的基本实现
1) 创建 Observer(被观察者对象)
//Observable部分,被观察者部分
        Observable myObservable=Observable.create(new Observable.OnSubscribe() {
            @Override
            public void call(Subscriber            
关注
打赏
1482932726
查看更多评论
0.3343s