最近工作上用到了rxJava ,简要做下笔记,以备后期温故。
1. 2018年3月份 rxJava 1.x版本 滚蛋了,官方也要放弃这个孩子。rxJava2.x版本做了一些改动,可以了解下背压
2. 这个东西是个事件流驱动的异步东东
3.用起来比较简单:撸码
Observable.create(new Observable.just(getFilePath())
//指定了被观察者执行的线程环境
.subscribeOn(Schedulers.newThread())
//将接下来执行的线程环境指定为io线程
.observeOn(Schedulers.io())
//使用map操作来完成类型转换
.map(new Func1<String, Bitmap>() {
@Override
public Bitmap call(String s) {
//显然自定义的createBitmapFromPath(s)方法,是一个极其耗时的操作
return createBitmapFromPath(s);
}
})
//将后面执行的线程环境切换为主线程
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
//创建观察者,作为事件传递的终点处理事件
new Subscriber<Bitmap>() {
@Override
public void onCompleted() {
Log.d("iven","结束观察...\n");
}
@Override
public void onError(Throwable e) {
//出现错误会调用这个方法
}
@Override
public void onNext(Bitmap s) {
//处理事件
showBitmap(s)
}
);
说说啥意思,这个是基于1.x 版本的,其中map 是用来加工的,subscribeOn 用来指定被观察者执行的线程,observeOn 用来指定观察者所在的线程,其中subscribeOn 只能指定一次,如果多次指定的话就以第一次的指定为准,observeOn 可以多次指定,每次指定完成之后他的作用域会指定在下一次的应用。
4.目前项目用的是1.x 后期升级之后再来撸2.x的源码