这些天看RxJava看的头晕

打破以前的思维方式,然后重新建立一套思想体系,破而后立,这就是RxJava带给我的感觉。

听起来很精彩,但这个过程真的很难,因为RxJava实在是带来了太多太多陌生的概念。

比如它的观察者模式,比如它的各种操作符,比如它各种线程的切换等等,甚至它到底是个啥东西,到底能做什么,都显得很陌生。

RxJava官网上对它的定义是这样的

Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.

翻译成中文的话就是

在 Java VM 上用于通过使用可观察序列来编译异步和基于事件的程序的库。

好吧,尽管这是一句中文,我却根本不想看也看不懂它。

很绝望。

偏偏这是一个今年火到炸裂的库,眼看匆匆一年马上就要过去了而我的技术债还有很多没还清,很捉急。

我摇了摇头,点开了google,他强由他强,我就要翻墙。

可以看到,第一页的内容几乎都被我浏览过一遍。其中扔物线写的《给 Android 开发者的 RxJava 详解》,是我感觉写的最好的一片教程了。

作者取名为[详解],并不是说仅凭一篇文章就真的能将整个RxJava的模式、操作符、用法等等写的滴水不漏。事实上他列举的场景与例子也都只是很简单的一些情况。

之所以敢取名为[详解],我想是因为在思想、逻辑或者说原理方面作者实在是解释的太清晰了。

这点牛逼,虽然他的github头像很傻逼(不服来辩),但这点真的很牛逼。

这些天我花了很多时间边理解边记录,再结合官方Api文档,总算是大致对RxJava有了一个比较清晰的认知。

响应式编程,这是RxJava能做到的很重要的一点。

几个月前,当我为了让这个网站变得更美观而决定开始自学css和html时,就已经接触过这个概念,当时我请教了一个做前端的朋友什么叫做响应式,她告诉我要是一个Web页面在不同尺寸的设备上,比如手机、pad、桌面端上,展示的效果不一样,这就叫响应式。

可能是觉得这个回答有点牵强,并没有深聊下去。

直至几天前我才恍然大悟,或许她以为我想问的是响应式设计

在不同尺寸的设备上展示不同的效果和布局,这首先是一种设计。为了实现这种设计,所做的开发,或者说该用到的技术手段才是响应式编程

再通俗的说,当程序检测到设备尺寸发生改变时,立刻做出相应的变化,展示出不同的布局。这个检测变化的过程,就是响应式编程的精髓。

在RxJava中,它有一个优雅的称呼,观察者模式。

被观察者观察者之间通过订阅建立联系,因此当被观察者的状态发生改变时观察者就可以做出相应的变化。

当然,RxJava的强大不仅仅限于此,它的用法和变化是很多的,这里完全不想写出来,因为写几天都写不完。

不过由于看了太多理论,我现在满脑子都是骚操作,所以我决定接下来做一波对RxJava进行具体使用的Demo,用RxJava实现一些功能,很期待。

不过最后还是得吐槽一下,RxJava已经更新到RxJava2了,但是Retrofit中的RxJava支持依然是只支持第一代,还有RxBinding中也是一样。可是RxJava和RxJava2的语法根本就变了挺多的好吗?这样让我很头痛啊,用起来简直就感觉自己在强行把英文翻译成英文。

0%