android Rxjava 使用心得
来源:互联网 发布:java中匿名内部类 编辑:程序博客网 时间:2024/05/16 06:16
首先感谢这篇博客地址:http://www.jianshu.com/p/52cd2d514528
该博主里面介绍了使用规则,和一些简单的介绍,博主当时用的是1.0.4的版本比较老,到了2.0是稍微有点改变的,我看了博主的,然后自己写下这篇总结性的,我建议先看看博主的然后再来看看我的吧
首先得像自己的build.gradle添加这2个
compile ‘io.reactivex.rxjava2:rxandroid:2.0.1’
compile ‘io.reactivex.rxjava2:rxjava:2.0.1’
官网地址:https://github.com/ReactiveX/RxAndroid
很多都说RxJava就是观察者,和被观察者,2个角色,有时候容易被这2个弄混淆,不好区分他们,我们平常学习android也会用到这个观察者,和被观察者的模式比如我们最多的Button
private Button button;button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //响应事件处理 } });
Button —–被观察者
new View.OnClickListener()—-观察者
setOnClickListener——订阅
我们点击一个按钮Button(事件源)然后观察者感觉到了,然后就开始处理事情。
对应到RxJava上的被观察者:
Observable.create()或者是Observable.just(T…)或者是Observable.from,这3个就等于Button,他们是事件源,只不过这个事件源需要用这样的方式来创建使用
对应到RxJava上的观察者:
//创建一个观察者 Observer<String> observer = new Observer<String>() { @Override public void onCompleted() { } public void onError(Throwable e) { } @Override public void onNext(String s) { } };
也就是消费事件的,处理最后的事件的
最后是订阅:
被观察者.subscribe(观察者);
是不是感觉这有问题,你就理解为他们之间这样建立了关系
map/flatMap区别:
你理解为map是一个转换工具,由A类型转换成B类型,比如下面的Student—>String,flatMap是for循环
eg:map
Observable.just(student1, student2, student2) //使用map进行转换,参数1:转换前的类型,参数2:转换后的类型 .map(new Func1<Student, String>() { @Override public String call(Student i) { String name = i.getName();//获取Student对象中的name return name;//返回name } }) .subscribe(new Action1<String>() { @Override public void call(String s) { nameList.add(s); } });
eg:flatMap:
/** * 学生类 */ class Student { private String name;//姓名 private List<Course> coursesList;//所修的课程 ... } /** * 课程类 */ class Course { private String name;//课程名 private String id; ... }
一个学生可以有很多的课程
List<Student> students = new ArrayList<Student>(); students.add... ... Observable.from(students) .flatMap(new Func1<Student, Observable<Course>>() { @Override public Observable<Course> call(Student student) { return Observable.from(student.getCoursesList()); } }) .subscribe(new Action1<Course>() { @Override public void call(Course course) { Log.i(TAG, course.getName()); } });
这里面先传入学生集合students,在Observable call(Student student)循环遍历值获取CourseList 集合,最后拿到课程名称
- android Rxjava 使用心得
- Android okhttp + rxJava + retorfit2使用心得
- RxJava 学习使用心得
- RxJava使用心得
- Android RxJava 使用RxJava开发
- 【zZ】RxJava使用心得(一)
- Android使用RxJava浅析
- android RxJava使用教程
- Android RxJava 使用
- Android Rxjava 使用
- RxJava Android使用详解
- Android RxJava使用教程
- android RxJava使用教程
- Android RxJava的使用
- Android:RxJava的使用
- Android RxJava使用场景小结
- android rxjava的简单使用
- Android Retrofit + RxJava使用详解
- C语言-数据结构-prim算法求最小生成树
- 【PMP认证考试之个人总结】第 8 章 人力资源管理
- 【转】Makefile中的foreach函数
- mysql的操作语句
- atomic包的原理及分析
- android Rxjava 使用心得
- 离散题目14
- DUBBO用户指南(笔记)
- 【影评】摔跤吧爸爸!
- system:udev原理分析
- C语言-数据结构-线性表检索和二分检索
- 配置你的Editor
- ideal手动添加jar包
- cnpm 安装 node-sass & sass-loader, 仍旧无法编译的原因