rxJava 学习之路(二)
来源:互联网 发布:苹果游戏制作软件 编辑:程序博客网 时间:2024/05/21 18:47
在上篇文章中实现只是简单的认识了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
- rxJava 学习之路(二)
- RxJava学习(二)
- Rxjava 学习之路
- 学习RxJava之路
- Android框架学习之RxJava(二)操作符
- RxJava学习笔记之线程调度器Scheduler(二)
- RxJava学习历程(二)
- RxJava 学习笔记(二)
- RxJava学习详解(二)
- RxJava 学习之(一)
- RxJava学习笔记(二)--- 操作符
- RxJava学习笔记(二)操作符
- RxJava 学习笔记二
- RxJava学习(二)
- RxJava之基础入门(二)
- RxJava之二
- Android框架学习之Retrofit(二)RxJava和Retrofit2.0的结合使用
- android之RxJava的学习,从浅到深,从入门到别放弃(二)
- 一个简单的Makefile
- 网络制式总结
- 女生玩HTC Vive恐怖游戏 吓到发抖
- 十、森林与并查集---(0)什么是森林
- 类中赋值运算符重载函数
- rxJava 学习之路(二)
- SqlBulkCopy 数据库批量插入数据
- poj2287田忌赛马
- python 的日志logging模块学习
- 月薪2w的程序员技能
- JUC源码分析3-原子变量-AtomicIntegerFieldUpdater/AtomicLongFieldUpdater/AtomicReferenceFieldUpdater
- UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释
- 整理标签
- QT 文件管理