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 |
|
如果以Rx方式来理解,权限也是一个数据流,可能来一个granted或者rejected的权限,虽然状态不一样,但都可以理解 为权限数据,而且数据的发射是异步的,你不知道什么时候数据来。因此完全可以用Rx的方式来处理权限。
尝试失败,因为依赖无法添加。尝试网上解决方案仍无效,依赖无法添加。暂先放弃。 后面再观察一下吧,如果真心想用,只有以源码方式来集成,试用。