RxJava—创建操作符
来源:互联网 发布:云计算大数据视频教程 编辑:程序博客网 时间:2024/05/16 06:39
1.前言
在前面的一篇文章中介绍了RxJava的一些基本概念和RxJava的最简单用法,如果对这两个不是很清楚的话建议去看看RxJava—入门介绍。从本章开始会开始聊聊RxJava中的操作符(Operators),RxJava之所以强大是因为它提供了丰富且功能强大的操作符,通过使用和组合这些操作符几乎可以完成所有想要完成的任务,RxJava的操作符主要分为:创建操作符、转换操作符、过滤操作符、组合操作符、错误处理操作符、功能性操作符、条件操作符、数学运算及聚合操作符、其它操作符等。
在本章的内容中主要介绍创建操作符,常见的创建操作符有:create()、just()、from()、defer()、interval()、timer()、range()、repeat()。
2.创建操作符的使用
(1)Create()
create()操作符是所有创建型操作符的“根”,也就是说其他创建型操作符最后都是通过create操作符来创建Observable的,它的作用是从头开始创建一个Observable对象,默认不在任何调度器上运行。
根据官方给出的原理图:
现在要使用create()创建一个Observable对象
Observable.create(new Observable.OnSubscribe<Integer>(){ public void call(Subscriber<? super Integer> subscriber) { try { if(!subscriber.isUnsubscribed()) { for(int i = 0; i < 5; i++) { subscriber.onNext(i); } subscriber.onCompleted(); } } catch (Exception e) { subscriber.onError(e); } }}) .subscribe(new Subscriber<Integer>() { public void onCompleted() { Log.d("Create", "onCompleted()"); } public void onError(Throwable e) { e.printStackTrace(); Log.d("Create", "onError()"); } public void onNext(Integer integer) { Log.d("Create", "onNext:" + integer); } });
当点击按钮后在控制台上,可以看到这样的结果:
(2)From
from()操作符是把其他类型的对象和数据类型转化成Observable,在RxJava中,from()操作符可以转换Future、Iterator和数组,产生的Observable会发射Iterator或数组的每一项数据。from()默认不在任何特定的调度器上执行。然而你可以将Scheduler作为可选的第二个参数传递给Observable,它会在那个调度器上管理这个Future。
根据官方给出的原理图:
List<String> list = new ArrayList<String>();list.add("A");list.add("B");list.add("C");list.add("D");list.add("E");Observable.from(list) .subscribe(new Action1<String>() { public void call(String s) { Log.d("From", s); } });
当点击按钮后在控制台上,可以看到这样的结果:A B C D E根据官方给出的原理图:
Observable.just("A", "B", "C", "D", "E") .subscribe(new Action1<String>() { public void call(String s) { Log.d("Just", s); } });
根据官方给出的原理图:
根据官方给出的原理图:
Observable.interval(1, TimeUnit.SECONDS) .subscribe(new Action1<Long>() { public void call(Long aLong) { Log.d("interval", aLong.toString()); } });
以上代码是以秒为单位,每过1秒发射一个数据根据官方给出的原理图:
Observable.range(0, 10) .subscribe(new Action1<Integer>() { public void call(Integer integer) { Log.d("range", integer.toString()); } });
根据官方给出的原理图:
Observable.just("1", "2", "3") .repeat(2) .subscribe(new Action1<String>() { public void call(String s) { Log.d("repeat", s); } });当点击按钮后在控制台上,可以看到这样的结果:1 2 3 1 2 3
(8)Timer
根据官方给出的原理图:
final SimpleDateFormat sdf = new SimpleDateFormat("HH:MM:SS");final String beginTime = sdf.format(new Date());Log.d("timer", "beginTime: " + beginTime);Observable.timer(2, TimeUnit.SECONDS) .subscribe(new Action1<Long>() { public void call(Long aLong) { Log.d("timer", aLong.toString()); String endTime = sdf.format(new Date()); Log.d("timer", "endTime: " + endTime); } });当点击按钮后在控制台上,可以看到这样的结果:
- RxJava—创建操作符
- RXJava 创建操作符
- RXjava 创建操作符
- RxJava 创建操作符create
- RxJava 创建操作符form
- RxJava 创建操作符 just
- RxJava 创建操作符 defer
- RxJava-创建Observable操作符
- RxJava操作符(1)-创建
- RxJava创建类型操作符
- RxJava----操作符:创建操作符
- RxJava操作符之创建操作符
- RxJava操作符-创建操作符
- RxJava操作符(02-创建操作)
- RxJava 创建操作符 timer与interval
- Rxjava的Observable创建操作符介绍
- RxJava基础与创建操作符
- RxJava Creating Observables(创建操作符)
- seajs的使用
- kaggle入门篇一【手写数字识别】
- python之FTP程序(支持多用户在线)
- Qt-QML-给我的导航条写一个动画-State-Transition
- 斯坦福演讲:别在不断的优秀里,最终走向平庸
- RxJava—创建操作符
- 编程语言 标记语言 脚本语言分别有哪些? 区别是什么?
- 短进程优先的调度算法详解
- SpringBoot 自动生成API文档
- Linux搭建spark集群
- linux下task_struct部分解析
- 函数重载 C++(一)
- Java连接SQLite、MySQL、Sql Server数据库汇总
- 返回指针的函数&&指向函数的指针