您的位置:首页 > 编程语言 > Java开发

rxJava 学习之路(二)

2016-04-29 16:23 441 查看
在上篇文章中实现只是简单的认识了rxJava,这节来学习它的一些基本操作符,这才是rxjava的强大之处

参考:http://gank.io/post/560e15be2dca930e00da1083

先说两个重点:

1.Observable和Subscriber可以做任何事情

Observable可以是一个数据库查询,Subscriber用来显示查询结果;Observable可以是屏幕上的点击事件,Subscriber用来响应点击事件;Observable可以是一个网络请求,Subscriber用来显示请求结果。

2. Observable和Subscriber是独立于中间的变换过程的。

在Observable和Subscriber中间可以增减任何数量的map。整个系统是高度可组合的,操作数据是一个很简单的过程。

可能现在说不太了解,直接上代码,为了方便读者看,代码都是全部展开的

变换:(map)

所谓变换,就是将事件序列中的对象或整个序列进行加工处理,转换成不同的事件或事件序列。

Observable.just("你好").map(new Func1<String, String>() {

@Override
public String call(String s) {
return s + "-RxJava";
}
}).subscribe(new Action1<String>() {
@Override
public void call(String s) {

//字符串变成了 你好-RxJava
textView.setText(s);
}
});


map 不仅仅局限于只是返回Observable对象返回的类型,我们可以使用map返回一个新的Observable对象,下面我们来看看

//变换字符操作 map()
Observable.just("你好").map(new Func1<String, Integer>() {

@Override
public Integer call(String s) {
return s.hashCode();
}
}
).map(new Func1<Integer, String>() {

@Override
public String call(Integer integer) {
return Integer.toString(integer);
}
}
).subscribe(new Action1<String>() {

@Override
public void call(String s) {
Log.i(TAG, s);
}
});

由于让Subscribe尽可能做更少的操作,我们添加了第二个map,再一次转换,最后直接得到数据。

ok,上面说到的只是rxJava的基础知识,rxjava的强大之处在于它的操作符,下面继续来看,当你了解了它之后你一定迫不及待的更想学习它。

把字符串转成hash类型输出,当然,map的强大之处不仅仅在于此,这里只是一个简单的示例,更多的看官方文档

当然,map只是一对一的操作,那么如果要进行一对多的操作呢,要用到flatMap

Observable.just("hello world").flatMap(new Func1<String, Observable<String>>() {
@Override
public Observable<String> call(String s) {
return Observable.just(s + "--nihao");
}
}).subscribe(new Action1<String>() {
@Override
public void call(String s) {
Log.i(TAG, s);
}
});

注意:

map和flatmap虽然都是接受一个函数作为参数(Func1),但是返回值是不一样的,flatMap返回的是Observable类型,具体可看http://blog.csdn.net/new_abc/article/details/48025513

from:

它接收一个集合作为输入,然后每次输出一个元素给subscriber

String[] str = {"aaa", "bbb", "ccc"};
Observable.from(str).subscribe(new Action1<String>() {
@Override
public void call(String s) {
Log.i(TAG, s);
}
});

这里也可以用for循环实现,不过这样是不是更简单了呢,完全代替for循环

rxjava的操作符很多,当真正的掌握了之后肯定就会爱上它了

官方文档:https://mcxiaoke.gitbooks.io/rxdocs/content/topics/How-To-Use-RxJava.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: