具体介绍请看这篇博客,本文主要记录个人学习rxjava的过程心得
对rxJava理解
优秀的观察者模式框架
将事件分为两个角色 被观察者(Observable) 和 观察者(Observer)
被观察者处理事情(多线程,异步,同步都行),处理结束以后发射数据,观察者通过注册可接收数据。
整体来说就是做了这么一件事。
为什么选择rxJava
优点:
- 简化逻辑,易于理解
- 优秀的多线程方案(线程池)
- eventBus替代品
关于简化逻辑
rxJava提供了丰富的操作符,这些操作符可以简化逻辑,让代码读起来一目了然
举个栗子:
- 将文件夹下的所有.png文件加载出来1234567891011121314151617181920new Thread() {public void run() {super.run();for (File folder : folders) {File[] files = folder.listFiles();for (File file : files) {if (file.getName().endsWith(".png")) {final Bitmap bitmap = getBitmapFromFile(file);getActivity().runOnUiThread(new Runnable() {public void run() {imageCollectorView.addImage(bitmap);}});}}}}}.start();
VS
|
|
第一段的传统代码,读起来还要思考。
而第二段代码,只要看看操作符就好了
from(将文件夹数组拆开成每一个文件夹) –> flatMap(将文件夹下的文件拆开) –> filter(过滤文件) –> map(处理文件)
逻辑清晰
关于操作符
刚开始上手,操作符的理解很重要。要会用,记录如下
创建操作
just:将要处理的数据转换为 Observable,不做其他任何操作;
from:将要处理的数据拆分开,分别转换为 Observable 。如上例中 Observable.from(file.listFiles());(fromArray:拆分数组 fromFuture:异步 fromPublisher fromCallable fromIterable:同步)
repeat:重复发射相同的数据
create:自己创建一个 Observable
defer:只有当观察者注册了该Observable才会创建一个Observable,并且为每一个观察者创建一个新的Observable
range:发射指定范围的整数序列
interval:根据给定时间间隔发射数据;
timer:根据给定时间间隔发射数据;
empty:通知完成;
erro:发射错误;
never:不发射数据;
变换操作
看看app吧,太多了