从它的全称可知RxJava是一个响应式编程的类库,什么是响应式编程,?说到响应式编程,不得不提到的是函数式编程和面向对象编程,函数编程的核心思想是一切皆函数,面向对象的思想是一切皆对象,那么函数式编程呢?一切皆流!而且函数式编程和响应式编程又是一脉相承的有太多的相似之处
下面引出这个概念就好理解了,响应式编程是一种面向数据流和变化传播的编程范式,如果你理解观察者模式,这个应该很好理解的,如果还不知道什么是观察者模式,那就自行百度下,有很多资料,我就不贴了,非常基础的东西。
介绍完概念,那么问题来了,这玩意到底好干啥?为什么这么多人追捧?
1.对编程方式的改变
RxJava用一些封装好的函数就可以不用在写for循环这样的语句使得编程更符合流式编程的思想,阅读起来更简洁,给人一种耳目一新的感觉
2.避免回调地狱的编程方式
做过客户端,尤其是编写复杂的JavaScript肯定会遇到回调中有回调这种丑陋的编程,RxJava可以有效的避免这种情况!
3.对异步方法尤其是对多个线程的切换的处理可谓是一绝
4.ReactiveX开源组织不仅仅提供了Java的响应式编程库,更有swift,js,kotlin,go等多种语言的支持。RxJava会用的看其他的库也是水道聚成的事
5.基于RxJava的类库,如RxAndroid,RxBus,Rxbinding 更加简便了开发流程,尤其是Rxbinding 更好的贴合了Android 流行的mvvm 或mvp的开发方式
当然其优点可能不仅仅这么点,可能还有很多,本人水平有限,现在理解的有就这么多了
目前RxJava已经进化到2.0,而公司的项目还在使用1.0,我打算下周花时间用2.0并把把这部分代码重构下,顺便分享以下使用心得
参考 : RxJava中文文档