RxJava是很好的工具,封装了许多规则
优点1:简化逻辑
比如要嵌套请求的时候,这个时候用flatMap操作符就可以实现优雅的链式嵌套请求
优点2:简化代码
他的操作符封装了规则,我们用一个操作符就可以实现许多功能
比如要打包网络请求,这个时候用zip就可以打包数据源
优点3:最方便的线程切换
这些东西,自己当然也可以实现,用代码量去取代这一个个操作符,自己实现也会复杂化逻辑。
所以面临两个问题:
代码量膨胀后的架构的问题
逻辑复杂后的解耦问题
问题1:代码量膨胀
rxjava确实可以替你解决一定的冗余代码,但是面对巨型项目,架构是不可避免的问题。所以如果想不用rxjava,必须做好良好清晰架构、代码拆分的准备
问题2:逻辑复杂化
比如嵌套请求,如果不用rxjava,你需要在第一个请求的回调中再进行另一个请求。而rxjava则是围绕数据源做了一定的同步工作,所以使得你可以在一条链上,整个逻辑就看起来特别清晰。其实这个链式调用自己代码手写完全可以实现。不仅如此,你还可以写成另外的风格。所以rxjava帮你处理好了复杂的逻辑,这些逻辑如果自己写需要不俗的编程水平。可是事实上,设计模式,面向编程,面向切面思想等解耦套路,这种也是优秀程序员不可缺少的东西。
问题3:线程切换
rxjava线程切换特别厉害。可是多线程编程也是优秀程序员必备的东西。锁(sync,reen,cas等),并发容器的使用(线程池 等),采用aqs写出自己的并发容器( 系统有些并发容器有坑)等,这些东西是他没有帮你做的。
所以rxjava可以说是提升程序员段位的bug。封装了许多优秀程序员也要费一番手脚的东西。
推荐学习使用。
也是简化代码逻辑的神器。现在流行一套商业化代码:rxjava+retrofit+glide。
真的很不错。
但是我借鉴了rxjava的代码思维和retrofit的封装思维也实现了一套,虽然不好,但是还算顺手,所以这些东西都弃了。以前我也是这套商业化框架使用者中的一员。(其实我是懒得学新东西了,这样不好)
对于新手,处在用的阶段,推荐还是学学rxjava和这套商业化框架吧。可以因此使得水平得到一个快速提升。
对于中手,处在一个体悟原理的阶段,你可以抛弃rxjava和这套框架,参考他们的思维,用朴素的东西,写出和他们效果相仿的东西;也可以深挖这套框架的原理,让这套框架在你的手上发挥出非常非常强大的力量。
对于高手,可以回归rxjava了,毕竟,能用一行代码写的东西,为什么要用100行呢?
总之,rxjava,是当之无愧的神器,我们没有理由不使用它。