初步认识RXJava

前言:面向对象变成是命令式编程的一种,面向计算机硬件的抽象,有变量、赋值、表达式和控制语句。函数式编程是面向数学的抽象,将计算描述为表达式求值。响应式编程时一种面向数据流和变化流的编程范式,数据跟新是相互关联的,函数式编程和响应式编程整合起来就是函数响应式编程。当下有两种函数响应式编程框架,其一是RXJava,另一个是Agera。将一系列的操作符链接起来就可以完成复杂的逻辑。代码被分解成一系列可以组合的片段。这就是响应式函数编程的魅力

RxJava最核心的两个东西是Observables(被观察者,事件源)和Subscribers(观察者)。Observables发出一系列事件,Subscribers处理这些事件。这里的事件可以是任何你感兴趣的东西(触摸事件,web接口调用返回的数据。。。)

一个Observable可以发出零个或者多个事件,直到结束或者出错。每发出一个事件,就会调用它的Subscriber的onNext方法,最后调用Subscriber.onNext()或者Subscriber.onError()结束。

Rxjava的看起来很想设计模式中的观察者模式,但是有一点明显不同,那就是如果一个Observerble没有任何的的Subscriber,那么这个Observable是不会发出任何事件的。

设计特点
1、 Observable可以是一个数据库查询,Subscriber用来显示查询结果;Observable可以是屏幕上的点击事件,Subscriber用来响应点击事件;Observable可以是一个网络请求,Subscriber用来显示请求结果。按理来说SubScriber越简单越好,因为可能会在主线程中运行,而且他的核心功能时响应而不是修改。

2、Subscriber并不知道操作流对数据的处理,它只知道自己接受一个Observable对象。

3、Observerable对象流不需要知道如何处理错误,完全交由Subscriber处理

4、你可以使用subscribeOn()指定观察者代码运行的线程,使用observerOn()指定订阅者运行的线程

5、当调用Observable.subscribe(),会返回一个Subscription对象,你可以在后面使用这个Subscription对象来操作被观察者和订阅者之间的联系。此外需要注意内存泄露。

demo地址 https://github.com/LeeFranz/Android-Network/tree/master/RxJavaTest

参考文章:
https://blog.csdn.net/lzyzsd/article/details/41833541
https://blog.csdn.net/lzyzsd/article/details/44094895
https://blog.csdn.net/lzyzsd/article/details/44891933
https://blog.csdn.net/lzyzsd/article/details/45033611

你可能感兴趣的:(初步认识RXJava)