Rxjava 技术总结
2016-04-07 15:04
441 查看
Rxjava Github 地址:
https://github.com/ReactiveX/RxJava
https://github.com/ReactiveX/RxAndroid
干货地址:http://gank.io/post/560e15be2dca930e00da1083
翻译地址:https://mcxiaoke.gitbooks.io/rxdocs/content/Scheduler.html
Rxjava 技术
主要两个核心:Observables(被观察者,事件源)和Subscribers(观察者,订阅者)
just () 讲数据一个一个的输出 : 发出事件 new Fun1 函数中 第一个参数: 传入参数, 第二个参数位 返回参数。
from : 接受的是一个集合, 可以讲集合中的数据逐一执行操作单元
map :是指 just 发出事件与订阅处理事件之间的数据转换
subscribe: 订阅处理 (Action1) onnext, (Action1) onerror ,(Action0)oncomplete )
1.Observable和Subscriber可以做任何事情
Observable可以是一个数据库查询,Subscriber用来显示查询结果;
Observable可以是屏幕上的点击事件,Subscriber用来响应点击事件;
Observable可以是一个网络请求,Subscriber用来显示请求结果。
Observable 相当于一个过程中的入口, Subscriber 相当于一个过程中的出口
2.Observable和Subscriber是独立于中间的变换过程的。
在Observable和Subscriber中间可以增减任何数量的map。
3 Rxjava中的函数、
from subscribe: 可以处理集合 循环的执行 订阅的执行单元
flatMap 函數 返回的是Obserable
flatMap 和 map 之间的区别
和 map() 不同的是, flatMap() 中返回的是个 Observable 对象
lift 变换
4 线程控制 调度器
Schedulers.immediate(): 直接在当前的线程中执行。
Schedulers.newThread(): 总是创建新的线程执行。
Schedulers.io(): io 文件的处理。
AndroidSchedulers.mainThread():在主线程中执行。
https://github.com/ReactiveX/RxJava
https://github.com/ReactiveX/RxAndroid
干货地址:http://gank.io/post/560e15be2dca930e00da1083
翻译地址:https://mcxiaoke.gitbooks.io/rxdocs/content/Scheduler.html
Rxjava 技术
主要两个核心:Observables(被观察者,事件源)和Subscribers(观察者,订阅者)
just () 讲数据一个一个的输出 : 发出事件 new Fun1 函数中 第一个参数: 传入参数, 第二个参数位 返回参数。
from : 接受的是一个集合, 可以讲集合中的数据逐一执行操作单元
map :是指 just 发出事件与订阅处理事件之间的数据转换
subscribe: 订阅处理 (Action1) onnext, (Action1) onerror ,(Action0)oncomplete )
1.Observable和Subscriber可以做任何事情
Observable可以是一个数据库查询,Subscriber用来显示查询结果;
Observable可以是屏幕上的点击事件,Subscriber用来响应点击事件;
Observable可以是一个网络请求,Subscriber用来显示请求结果。
Observable 相当于一个过程中的入口, Subscriber 相当于一个过程中的出口
2.Observable和Subscriber是独立于中间的变换过程的。
在Observable和Subscriber中间可以增减任何数量的map。
3 Rxjava中的函数、
from subscribe: 可以处理集合 循环的执行 订阅的执行单元
List list = new ArrayList(); for (int i = 0; i <3 ; i++) { list.add("url"+i); } Observable.from(list).subscribe(new Action1<String>(){ sd @Override public void call(String s) { System.out.println("call:" +s ); } }); Log日志: call:url0 call:url1 call:url2
flatMap 函數 返回的是Obserable
Observable.from(list).flatMap(new Func1<Student, Observable<Course>>() { @Override public Observable<Course> call(Student student) { System.out.println(" Fun1 Student call:" + student.getName()); return Observable.from(student.getListSubject()); } }).subscribe(new Action1<Course>() { @Override public void call(Course course) { System.out.println("Action1 course call: " + course.getSubname()); } }); Log 日誌輸出 Fun1 Student call:张三 Action1 course call: 张三课程 00 Action1 course call: 张三课程 01 Action1 course call: 张三课程 02 Fun1 Student call:李四 Action1 course call: 李四课程 00 Action1 course call: 李四课程 01 Action1 course call: 李四课程 02 Fun1 Student call:王武 Action1 course call: 王武课程 00 Action1 course call: 王武课程 01 Action1 course call: 王武课程 02
flatMap 和 map 之间的区别
和 map() 不同的是, flatMap() 中返回的是个 Observable 对象
lift 变换
4 线程控制 调度器
Schedulers.immediate(): 直接在当前的线程中执行。
Schedulers.newThread(): 总是创建新的线程执行。
Schedulers.io(): io 文件的处理。
AndroidSchedulers.mainThread():在主线程中执行。
相关文章推荐
- Java并发编程:并发容器之ConcurrentHashMap(转载)
- 深入理解java虚拟机--java内存区域与内存溢出异常
- bug_ _ java.lang.IllegalArgumentException: pointerIndex out of range 问题的两种解决办法
- 多线程笔记总结
- Spring中AOP动态代理
- spring整合freemarker 自定义标签
- Java IO:ByteArrayInputStream使用详解及源码分析
- 如何把AndroidStudio项目向Eclipse项目迁移
- Spring事务Transaction配置的五种注入方式详解
- java中两种随机数的产生方式
- RxJava和RxBus代替EventBus
- 你真的会写单例模式吗-------Java实现
- SPRING-MVC访问静态文件,如jpg,js,css
- HashMap类的注释翻译
- spring通过三种方式将value注入到bean的property中
- Java对流的使用(三)
- struts2 注解 同时 使用 *_*_*_*等
- Spring JdbcTemplate方法详解
- Java解析XML
- Java并发编程系列之二十四:Exchanger