稀有猿诉

十年磨一剑,历炼出锋芒,说话千百句,不如码二行。

Beyond RxJava

RxJava是一种编程范式,它并不是一个库,而是一种编程思想,一种解决问题的新思路,一种架构思想。因此,基于RxJava还有大量的其他的库,可以一起更容易让用RxJava构建应用程序。

其他书籍和文档也有提及,这些东西称为RxJava Extras

RxAndroid

这是Jake Wharton大神弄的,但其实这个库里面的东西比较少。

最为常用的就是Schedulers之中的AndroidScheduler.main(),这个是在切线程时常用到的。其他的好像也没啥。

RxBinding

主要是处理Android UI的响应事件,它把UI响应事件,如OnClick,onTouch和onTextChanged等变成一个Observable。方便创建数据流。

虽然从语义上理解,这些UI事件的Observable应该是hot的,但是它们并不支持multicast。也就是说如果想用UI事件创建的Observable,创建两个数据处理流程,就需要去multicast。

方法就是可以用share(),之后就可以multicast了。

但这里也需要处理资源清理问题,因为事件都是通过向View添加listener来实现的,那么如何及时的清理listener,这个需要研究一下。

RxPermissions

专门处理权限问题。权限,因为必须先调用request,然后在onActivityResult里面去处理,所以你的代码逻辑必然会被分成两段:

初始化时,比如:

1
2
3
4
5
6
7
8
onCreate
if permission granted
   doOurThings
else request permissions

onActivityResult
if permission granted:
   do Our things

如果以Rx方式来理解,权限也是一个数据流,可能来一个granted或者rejected的权限,虽然状态不一样,但都可以理解 为权限数据,而且数据的发射是异步的,你不知道什么时候数据来。因此完全可以用Rx的方式来处理权限。

尝试失败,因为依赖无法添加。尝试网上解决方案仍无效,依赖无法添加。暂先放弃。 后面再观察一下吧,如果真心想用,只有以源码方式来集成,试用。

参考资料

Comments