最近被人问起什么是响应式编程,虽然使用RxJava已经五六年了,但真正让我用一句话来概括什么是响应式编程还真有点困难。打开google,搜索什么是函数编程,看了几遍文章也没有明确的答案,这里谈谈自己的理解。

响应式编程一个核心的概念是流(stream)。可以基于任何东西创建数据流。流非常轻便,并且无处不在,任何东西都可以是一个流:变量,用户输入,属性,缓存,数据结构等等。除此之外,我们有很多功能强大的函数,可以对这些流进行合并、过滤、转变等。

流可以被监听,对流的 “侦听” 又称为 订阅(subscribing),而定义的函数即为 观察者(observer),流就是可被观察的对象(observable)。这是一个典型的观察者模式。

响应式编程的好处是,无需我们等待某个操作完成或者状态发生改变时,重新去刷新UI。比如在App中,有一个修改头像的功能,如果我们修改了头像,需要在所有显示头像的界面修改头像,就需要我们在每一个界面onResume的时候重新获取头像。如果我们使用Room结合Rxjava当数据发生变化,就会自动接收到改变,然后修改头像。其次,提供了强大的操作符。允许我们对接收到的数据进行变换修改,最终发送出去。

参考