美文网首页
RxJava2.0基础

RxJava2.0基础

作者: hello_9527 | 来源:发表于2018-07-05 15:01 被阅读0次

前言:

RxJava等编程思想正在Android开发者中变的越来越流行。唯一的问题就是上手不容易,尤其是大部分人之前都是使用命令式编程语言。

首先要先理清这么一个问题:Rxjava和我们平时写的程序有什么不同。相信稍微对Rxjava有点认知的朋友都会深深感受到用这种方式写的程序和我们一般写的程序有很明显的不同。我们一般写的程序 统称为命令式程序,是以流程为核心的,每一行代码实际上都是机器实际上要执行的指令。而Rxjava这样的编程风格,称为函数响应式编程。函数响应式编程是以数据流为核心,处理数据的输入,处理以及输出的。这种思路写出来的代码就会跟机器实际执行的指令大相径庭。所以对于已经习惯命令式编程的我们来说,刚开始接触Rxjava的时候必然会很不适应,而且也不太符合我们平时的思维习惯。但是久而久之你会发现这个框架的精髓,尤其是你运用到大项目中的时候,简直爱不释手,随着程序逻辑变得越来越复杂,它依然能够保持代码简洁。

1.RxJava是什么:

要知道RxJava是什么,那么你应该先去了解一下Rx。Rx的全称是Reactive Extensions,直译过来就是响应式扩展。Rx基于观察者模式,他是一种编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步数据流。ReactiveX.io给的定义是,Rx是一个使用可观察数据流进行异步编程的编程接口,ReactiveX结合了观察者模式、迭代器模式和函数式编程的精华。Rx已经渗透到了各个语言中,有了Rx所以才有了 RxJava,Rx.NET、RxJS、RxSwift、RxPHP等等

2使用rxjava,gradle依赖:

compile'io.reactivex.rxjava2:rxandroid:2.0.1'

compile'io.reactivex.rxjava2:rxjava:2.0.7'

简单使用

onNext:你可以发送无数个onNext,发送的每个onNext接受者都会接收到.

onError:当发送了onError事件之后,发送者onError之后的事件依旧会继续发送,但是接收者当接收到onError之后就会停止接收事件了.

onComplete:当发送了onComplete事件之后,发送者的onComplete之后的事件依旧会继续发送,但是接收者接收到onComplete之后就停止接收事件了.

onError事件和onComplete事件是互斥的,但是这并不代表你配置了多个onError和onComplete一定会崩溃,多个onComplete是可以正常运行的,但是只会接收到第一个,之后的就不会再接收到了,多个onError时,只会接收到第一个,第二个会直接造成程序崩溃.

create() 方法是 RxJava 最基本的创造事件序列的方法。基于这个方法, RxJava 还提供了一些方法用来快捷创建事件队列,例如:

 just(T...): 将传入的参数依次发送出来。

from(T[]) / from(Iterable) : 将传入的数组或 Iterable 拆分成具体对象后,依次发送出来。


3.线程切换

默认情况下,发送者和接收者都运行在主线程,但是这显然是不符合实际需求的,我们在日常使用中,通常用的最多的就是在子线程进行各种耗时操作,然后发送到主线程进行,

被观察者在子线程,观察者在android主线程调用

     - Schedulers.io()      io操作的线程, 通常io操作,如文件读写.

     - Schedulers.computation()      计算线程,适合高计算,数据量高的操作.

     - Schedulers.newThread()      创建一个新线程,适合子线程操作.

     - AndroidSchedulers.mainThread()      Android的主线程,主线程

4.常用操作符

操作符就是为了解决对Observable对象的 变换(关键词) 的问题,操作符用于在Observable和最终的Observer之间修改Observable发出的事件。

map

map的作用简单来说就是我输入一个数据类型的对象,转换得到另一个我想要的数据类型的对象,例如下边,传入integer,得到String。

map操作符对原始的Observable发送的每一项数据应用一个你选择的函数,然后返回一个发射这些结果的Observable

flatMap

flatMap 返回的是一个全新的Observable 对象

filter

这个操作符可以作为数据筛选器,帮你过滤不想要的数据

take

这个操作符可以作为数据筛选器,帮你过滤不想要的数据

doOnNext

此操作符可以在消费者也就是观察者 接收到数据之前做事。

相关文章

  • RxJava2.0基础

    前言: RxJava等编程思想正在Android开发者中变的越来越流行。唯一的问题就是上手不容易,尤其是大部分人之...

  • Rxjava系列(六) RxJava2.0操作符详解

    Rxjava2.0概述 通过前面的文章介绍,读者对RxJava2.0应该有了初步的认识。RxJava2.0相对1....

  • RXjave总结

    文章 给初学者的RxJava2.0教程(一)给初学者的RxJava2.0教程(二)

  • RxJava

    教程 给初学者的RxJava2.0教程(一) 给初学者的RxJava2.0教程(二) 给初学者的RxJava2.0...

  • RxJava2.0源码初探

    RxJava2.0源码初探 RxJava2.0的源码相对于1.0发生了很大的变化, 命名方式也发生了很大变化, 下...

  • Rxjava2.0 发生订阅关系 的源码解析

    由于要做一场关于rxjava2.0 的内部分享,本人便怀着期待的心情去了解了下rxjava2.0,关于rxjava...

  • RxJava2.0的使用

    这里的讲解比较简单,易懂 给初学者的RxJava2.0教程(一) :基本工作原理给初学者的RxJava2.0教程(...

  • RxJava2.x (二) 操作符和调度器

    上一篇文章介绍了RxJava基础,这一篇介绍一下RxJava2.0中操作符和调度器的使用。 一、操作符 map()...

  • #RxJava2.0 操作符(2)—— Transforming

    RxJava2.0 操作符(2)—— Transform 转换符 Transforming 转换符 Buffer ...

  • Rxjava2

    Season_zl给初学者的RxJava2.0教程 ObservableEmitter emitter 1....

网友评论

      本文标题:RxJava2.0基础

      本文链接:https://www.haomeiwen.com/subject/mqpeuftx.html