为什么要使用 RxJava,它的好处是什么?

我们为什么要使用RxJava?RxJava有哪些好处?

RxJava最精髓的地方,在于它的思想,它把一切数据看成“流”,数据是流动的,在流动的过程中进行加工,最终把加工好的数据呈现在流的末端。
我们为什么要使用RxJava,其实RxJava解决的还是我们之前解决的问题,其实RxJava的解决过程跟我们之前的解决过程是一样的,只是Rxjava经过了更好的抽象,使得代码之间的耦合性变的更低。
举个例子,在Android中,为了不阻塞UI线程,所有的耗时操作都需要异步执行,一旦有了异步,就会涉及到线程通信,这也就是Android经典的Handler机制了。在异步这个领域内,我们要注意以下几点:

  1. Activity与WorkThread的生命周期的不同步导致的内存泄漏
  2. 不断的new Thread导致进程中有多个Thread,进而增加了Thread对CPU执行时间争抢的难度,有可能导致UI Thread迟迟抢不到CPU,导致UI卡顿。
  3. 使用Handler进行Thread间通信时,要注意对Message的obtain方式,防止Message浪费内存
  4. Activity与Handler生命周期不一致导致的内存泄漏
  5. 要完成一件事,得在WorkThread与UI Thread之间不停的切换,而带来的成本就是代码不停的上下翻动。

在RxJava中,线程间的通信只是一个很小的配角,RxJava把所有的操作都看成时对数据的加工,而UI Thread 与WorkThread只是“数据加工厂”需要的环境。当数据留到这个“数据加工厂”时,只需要指定它所需要的环境即可。
代码演示如下:

如果不算注释,整个的代码量是很小的。这其中包含了之前的handler机制,把各个方法块儿通过“.”这个符号联系了起来,并且指明了方法块儿与方法块儿之间的关系属性。
开发中很大的一块就是程序的升级,需求变更,RxJava很好的把完成一件事情的所有步骤都解藕,使得代码之间是可以插拔的。如果新需求进来时,只需要在合适的地方添加新的“数据加工厂”即可,或者去到相应的“数据加工厂”,而且完成这件事情的整个过程是很清晰的。

RxJava的流程:

生产数据源(携带原始数据)-(数据类型)-> 数据加工厂1(对数据进行加工完之后,进行包装,重新发送到流中) – (新数据类型) -> 数据加工厂2(再次对数据进行加工,然后发出去) -> (新数据类型) -> 数据最终接收工厂

只要记住总流程,就知道RxJava怎么用了。

0

发表评论

您的电子邮箱地址不会被公开。