Android Rxjava的create的基本用法
来源:互联网 发布:李明linux百度云资源 编辑:程序博客网 时间:2024/06/10 12:05
为什么要使用rxjava呢? 如果你的代码比较少,可能感受不到他的魅力, 如果你的项目比较的大, 那你就会很幸福; 还记得asycntask异步任务, 只有doInbackground 只能在子线程中运行,其他都是在ui线程运行, 第一次用的时候有没有感觉这个真好用, 不用考虑那么多线程切换问题, 而rxjava跟他基本一样, 简化我们的异步操作, 是代码整洁明了; 他的特点就是: 简洁;ok, 话有点多了, 有没有很心急的,哈哈, 直接撸代码!
1.添加依赖
compile 'io.reactivex:rxjava:1.0.14'compile 'io.reactivex:rxandroid:1.0.1'
2.角色说明
Observable 被观察者
Observer 观察者
Subsriber 订阅者(也可以理解为观察者)
3.基本用法(1)
//1 创建被观察者 //参数说明: Interger就是我们要观察的对象; Observable<Integer> observable = Observable.create(new Observable.OnSubscribe<Integer>() { //参数说明, subscriber是订阅者,也称观察者,二者有一点小小的却别,基本一样; //这里是一个回调, 回调外面的观察者的onNext方法和onCompleted方法; @Override public void call(Subscriber<? super Integer> subscriber) { for (int i = 0; i < 4; i++) { subscriber.onNext(i); } subscriber.onCompleted(); } }); //2 创建观察者, 参数说明: new Observer<Integer>()表示的是这个观察者订阅了observable, //你可能问,是observable订阅了observer,英语就是则麽神奇; observable.subscribe(new Observer<Integer>() { //会在被观察者那里调用,回调到这里 @Override public void onCompleted() { System.out.println("onCompleted"); } //产生异常是后回调 @Override public void onError(Throwable e) { System.out.println("onError"); } //这个方法就不多说了; @Override public void onNext(Integer integer) { System.out.println("onNext =" + integer + "\n"); } });
结果输出:
09-12 20:44:45.562 31383-31383/cn.xianzaishi.rxjava I/System.out: onNext =009-12 20:44:45.562 31383-31383/cn.xianzaishi.rxjava I/System.out: onNext =109-12 20:44:45.562 31383-31383/cn.xianzaishi.rxjava I/System.out: onNext =209-12 20:44:45.562 31383-31383/cn.xianzaishi.rxjava I/System.out: onNext =309-12 20:44:45.562 31383- /cn.xianzaishi.rxjava I/System.out: onCompleted```m结果分析: 调用了4次onNext , 一次onCompleted,次数刚好和上面的for 语句的循环次数加上subscriber.onCompleted();一样, 是不是懂了rxjava的原理了, 其实质就是观察者模式(这好像是废话, 英文单词的意思就看的出).其实上面的代码可以写成连式;<div class="se-preview-section-delimiter"></div>
//1 创建被观察者
//参数说明: Interger就是我们要观察的对象;
Observable.create(new Observable.OnSubscribe() {
//参数说明, subscriber是订阅者,也称观察者,二者有一点小小的却别,基本一样; //这里是一个回调, 回调外面的观察者的onNext方法和onCompleted方法; @Override public void call(Subscriber<? super Integer> subscriber) { for (int i = 0; i < 4; i++) { subscriber.onNext(i); } subscriber.onCompleted(); } }).subscribe(new Observer<Integer>() { //会在被观察者那里调用,回调到这里 @Override public void onCompleted() { System.out.println("onCompleted"); } //产生异常是后回调 @Override public void onError(Throwable e) { System.out.println("onError"); } //这个方法就不多说了; @Override public void onNext(Integer integer) { System.out.println("onNext =" + integer + "\n"); } });;
为什么可以是连式呢? 上面的那个的返回值和下面的调用者是一个啊(是不是说的太详细了,这样一篇博客就太长了);
下面是异常情况:<div class="se-preview-section-delimiter"></div>
//我们在上面的for语句里面加上一个if判断,制造错误;
for (int i = 0; i < 4; i++) {
if (i == 2) {
int a = i / 0;
}
subscriber.onNext(i);
}
结果输出:<div class="se-preview-section-delimiter"></div>
09-12 20:50:45.269 6409-6409/cn.xianzaishi.rxjava I/System.out: onNext =0
09-12 20:50:45.269 6409-6409/cn.xianzaishi.rxjava I/System.out: onNext =1
09-12 20:50:45.282 6409-6409/cn.xianzaishi.rxjava I/System.out: onError
结果分析:<div class="se-preview-section-delimiter"></div>
从这个结果和上面没加if语句的结果我们就可以知道,一旦被观察者里面出现异常,就会毁掉观察者的onError方法,而且onCompleted和他是敌对关系,有你没我,有我没你;
“`
到这里rxjava里面的最基本用法差不多了;
下篇博客讲述from方法的用法;(整一篇博客就太长了)!
- Android Rxjava的create的基本用法
- RxJava的基本用法
- Android Rxjava的from方法的基本用法
- 【Android】RxJava的使用(一)基本用法
- Android Retrofit+rxjava+okhttp请求网络的基本用法
- 【Android】RxJava的使用(一)基本用法
- Android RxJava的基本介绍
- Rxjava的原理以及基本用法
- [Android]_[RxJava的基本使用]
- Android RxJava的基本使用一
- Android RxJava的基本使用二
- Android RxJava的基本使用三
- Android RxJava的基本使用四
- android中RXJava的基本使用
- RxJava的基本使用
- RxJava的基本流程
- RxJava的基本使用方法
- RxJava的基本使用
- 明信片创意网页
- Android轮播图原理思路分析+实现方案
- git rebase
- php 日期转换
- hdu 5873 Football Games
- Android Rxjava的create的基本用法
- Zabbix Agent active主动模式监控
- 各种语言(php、python、shell、perl)中读一行或stdin
- iOS面试题集锦
- for 循环 foreach 循环输出练笔
- 扑克牌顺子
- iOS常用宏定义
- 使用google开源框架Exoplayer开发自定义播放器
- SAP R/3 中会计凭证和物料凭证的对应关系