RxJava 1.0版本入门篇之--2
来源:互联网 发布:vue.js事件对象event 编辑:程序博客网 时间:2024/06/05 18:07
延迟创建被观察者defer
//defer方法创建的被观察者实际上没什么用 他是在订阅的时候在Call方法内部创建并发送一个新的被观察者供订阅的观察者关联 //每关联一个观察者对象 那么特殊的被观察者内部就会多创建一个观察者关联 Observable<String> observable = Observable.defer(new Func0<Observable<String>>() { @Override public Observable<String> call() { Observable<String> observable1 = Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("hello Android"); } }); return observable1; } });
just方法代替原始create方法
Observable.// create(new Observable.OnSubscribe<String>() {// @Override// public void call(Subscriber<? super String> subscriber) {// if(!subscriber.isUnsubscribed()){// subscriber.onNext("好好学习");// subscriber.onNext("天天向上");// subscriber.onCompleted();// }// }// }) just("好好学习","天天向上")//当所有事件发送完毕之后,它会自动调用onCompleted() .subscribe(new Action1<String>() { @Override public void call(String s) { Log.d("haha","call"+s); } });
操作队列的From方法
From函数发送一个队列的数据,输出的长度无线.
//1.定义被观察者,用来发送一个队列的事件Observable<Student> observable=Observable.from(persons);
类定时器Interval&Timer
//第一个参数表示时间间隔,第二个参数表示时间单位的参数Observable<Long>observable=Observable.interval(3000,TimeUnit.MILLISECONDS,Schedulers.io());Observable<Long>observable=Observable.timer(3000,2000,TimeUnit.MILLISECONDS);
数字操作Range&重复操作Repeat
//range里面的参数取值表示范围 Observable.range(1,100).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.v("haha","call"+integer); } }); //repeat()参数表示要重复的次数 Observable.just("小二","王五").repeat(3) .subscribe(new Action1<String>() { @Override public void call(String s) { Log.v("haha",s); } });
延迟操作代码Delay
//delay延迟发送消息 Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("hello"); //如果发送异常,则直接抛出异常,上面一行代码将接收不到,后面的代码也执行不到// subscriber.onError(new NullPointerException("空指针")); subscriber.onNext("Android"); } //delay 整体延迟5s }).delay(5000, TimeUnit.MILLISECONDS) .subscribe(new Action1<String>() { @Override public void call(String s) { Log.v("haha",s); } });
过滤重复选项的Distinct方法
Observable.from(initPersons())//过滤重复名字的项.distinct(new Func1<Student,String>){.......return student,name;}
Filter方法过滤指定条件的数据
//filter 返回为真的数据将发送出去 Observable.just(1,2,3,4,5,6).filter(new Func1<Integer, Boolean>() { @Override public Boolean call(Integer integer) { return integer<4; } }).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.v("haha",""+integer); } });
获取队列中某些数据First&Last&ElementAt
//first获取队列的第一项数据,同理last()获取队列的最后一项数据,elementAt获取队列中的某个索引对应的数据 Observable.just(1,2,3,4,5,6)//.first()// .last() .elementAt(3) .subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.v("haha",""+integer); } });
获取指定集合的数据Take&TakeLast
//take获取队列中的前n个元素,takeLast获取队列中的后n个元素 Observable.just(1,2,3,4,5,6)
// .take(3)
.takeLast(3)
.subscribe(new Action1() {
@Override
public void call(Integer integer) {
Log.v(“haha”,”“+integer);
}
});
Sample&IgnoreElements
//sample对发送数据进行一定频率的采样发送 Observable.interval(1000,TimeUnit.MILLISECONDS) .sample(2000,TimeUnit.MILLISECONDS) .subscribe(new Action1<Long>() { @Override public void call(Long aLong) { Log.v("haha",""+aLong); } });} //ignoreElements 不关心Observable发送的数据,在完成时或遇到错误终止时收到通知,永远不会调用观察者的onNext()方法 Observable.just(1,2,3,4,5,6) .ignoreElements() //不发送任何信息 直接发送onCompleted() .subscribe(new Subscriber<Integer>() { @Override public void onCompleted() { Log.v("haha","onCompleted"); } @Override public void onError(Throwable e) { } @Override public void onNext(Integer integer) { Log.v("haha",""+integer); } });
阅读全文
0 0
- RxJava 1.0版本入门篇之--2
- RxJava 1.0版本入门篇之--1
- RxJava 1.0版本入门篇之--3
- RxJava 1.0版本入门篇之--4
- Rxjava之旅-入门篇
- RxJava之入门详解
- RxJava之基础入门
- RxJava入门之生命周期管理
- RxJava入门之生命周期管理
- RxJava入门之生命周期管理
- 初识RxJava(入门篇)
- RxJava入门篇
- RxJava学习小结之入门篇(一)
- RxJava/RxAndroid之快速入门2(转)
- RxJava学习记录--入门篇
- RxJava 入门之关键的类
- RxJava 入门之关键的类
- RxJava 入门之关键的类
- Java集合类二集合类详解及使用
- 数据挖掘学习笔记-关于数据的基本概念
- Linux文件系统调用----实现对树形文件结构的广度优先遍历,即按层输出文件信息
- 使用jsch-spring-boot在本地访问远程云服务
- Faster-Rcnn的loss曲线可视化
- RxJava 1.0版本入门篇之--2
- 玲珑学院 1125 咸鱼商店(二分+01背包)
- Codeforces 817D Imbalanced Array
- 使用git和github进行协同开发流程
- 字符串-leetcode 344 Reverse String
- Android开发环境搭建——集成了Eclipse的ADT Bundle + SDK
- PHP冒泡排序法 | 黄乔国PHP
- 25张图让你读懂神经网络架构
- 关于window.showModalDialog()返回值的学习