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

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: 可以处理集合 循环的执行 订阅的执行单元

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():在主线程中执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: