RxJava的学习之创建操作符(一)
来源:互联网 发布:长期股权投资商誉算法 编辑:程序博客网 时间:2024/06/05 18:31
1、create操作符
使用Create操作符从头开始创建一个Observable,给这个操作符传递一个接受观察者作为参数的函数,我们需要实现call方法发射一些数据,并恰当的调用观察者的onNext,onError和onCompleted方法。
create方法默认不在任何特定的调度器上执行。
create操作符是所有创建型操作符的“根”,也就是说其他创建型操作符最后都是通过create操作符来创建Observable的
Observable.create(new Observable.OnSubscribe<Integer>() { @Override public void call(Subscriber<? super Integer> subscriber) { for (int i = 0; i < 5; i++) { subscriber.onNext(i); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.d("TAG",String.valueOf(integer)); } });
2、from操作符
(1)定义:将其它种类的对象和数据类型转换为Observable(2)特点:将某个对象转换为Observable对象,然后依次的从对象(可能是Array或Iterable对象)中拿取数据,一个一个的发送。(3)数据格式如下5种形式: from(array) from(Iterable) from(Future) from(Future,Scheduler) from(Future,timeout, timeUnit)
代码示例:
public void from(){ String str[]={"one","two","three","four"}; Observable.from(str).subscribe(new Subscriber<String>() { @Override public void onCompleted() { Log.d("TAG","发送完成"); } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Log.d("TAG",s); } }); }
3、just操作符
(1)定义:Just将单个数据转换为发射那个数据的Observable,创建一个发射指定值的Observable(2)介绍:Just将单个数据转换为发射那个数据的Observable,创建一个发射指定值的Observable。Just类似于From,但是From会将数组或Iterable的素具取出然后逐个发射,而Just只是简单的原样发射,将数组或Iterable当做单个数据。如果需要空Observable你应该使用Empty操作RxJava将这个操作符实现为just函数,它接受一至十个参数,返回一个按参数列表顺序发射这些数据的Observable。如果看它的源码的话,你会发现其实它是对from的封装,他调用的还是from。源码: public static <T> Observable<T> just(T t1, T t2) { return from((T[])new Object[] { t1, t2 }); }
代码示例:
Observable.just("one","two","three","four").subscribe(new Subscriber<String>() { @Override public void onCompleted() { Log.d("TAG","发送完成"); } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Log.d("TAG",s); } });
List<String> list = new ArrayList<>(); list.add("one"); list.add("two"); list.add("three"); list.add("four"); Observable.just(list).subscribe(new Subscriber<List<String>>() { @Override public void onCompleted() { Log.d("TAG","发送完成"); } @Override public void onError(Throwable e) { } @Override public void onNext(List<String> list) { Log.d("TAG",list.toString()); } });
4、range操作符
(1)range操作符发射一个范围内的有序整数序列,你可以指定范围的起始和长度。(2)range有两个参数,第一参数是起始的位置,第二个参数是要输出的个数, 两个参数都是整型数据。一般可以结合Iterable对象和数组使用。
代码示例:
final List<String> list = new ArrayList<>(); list.add("one"); list.add("two"); list.add("three"); list.add("four"); Observable.range(0,2).subscribe(new Subscriber<Integer>() { @Override public void onCompleted() { Log.d("TAG","发送完成"); } @Override public void onError(Throwable e) { } @Override public void onNext(Integer integer) { Log.d("TAG",list.get(integer)); } });
当然创建操作符不止这些,我只是列举出一些比较常用的操作符,想要了解更多的操作符,点击这里。可能写的不是很好,若有问题,欢迎在评论下方提意见。
0 0
- RxJava的学习之创建操作符(一)
- RxJava学习之创建型操作符
- RxJava操作符(一) __创建操作
- RxJava操作符之创建操作符
- RxJava进阶一(创建类操作符)
- RxJava 学习之(一)
- 从零开始的RxJava之旅(2)---- RxJava操作符
- RxJava 学习笔记(五) --- Creating 创建操作符
- RXJava 创建操作符
- RXjava 创建操作符
- 【RxJava】的学习(一)
- RxJava学习篇之二:操作符的讲解(1)
- RxJava的学习之变换操作符—map
- RxJava的学习之变换操作符—flatMap
- RxJava的学习之变换操作符—buffer
- Rxjava的学习之变换操作符—scan
- Rxjava的学习之过滤操作符—first
- RxJava初见之创建操作
- 拼数
- SikuliX部署和基本使用说明
- oozie教程
- 浮点数的存储
- Origin多峰拟合
- RxJava的学习之创建操作符(一)
- C# 读取U盘序列号进行验证的代码
- Java的容器类库
- EventBus(guava)
- 一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十
- Java中的 static 使用之静态变量
- 【小工具】——从文本内容中提取日期时间
- 观察者模式(Observer)
- 《用户体验与可用性测试》-读书记录