RxJava2.x学习教程(二)常用操作符

上一篇是对RxJava基本概念的介绍RxJava2.x学习教程(一)基本概念,本文主要介绍常用操作符!操作符官方doc,里面有对各类操作符的讲解!

创建类的操作符

这里写图片描述
Create
最常用的操作符,用于创建一个具有发射事件能力的被观察者

   Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
                emitter.onNext("Hello");
                emitter.onNext("World");
                emitter.onComplete();
            }
        }).subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {
                Log.e("TAG", s);
            }
        });

java8箭头函数版:

   Observable.create((ObservableOnSubscribe<String>) emitter -> {
            emitter.onNext("Hello");
            emitter.onNext("World");
            emitter.onComplete();
        }).subscribe(s ->
            Log.e("TAG", s)
        );
05-19 15:25:11.290 7170-7170/com.example.rxjava.rxjavademo E/TAG: Hello
05-19 15:25:11.290 7170-7170/com.example.rxjava.rxjavademo E/TAG: World

just
just:只是简单的原样发射,可将数组或Iterable当做单个数据。它接受一至九个参数:

  String[] arr = new String[]{
  "ss1", "ss2", "ss3"};
  List<String> stringList = Arrays.asList(arr);

  Observable.just(arr).subscribe(new Consumer<String[]>() {
       @Override
       public void accept(String[] s) throws Exception {
           Log.e("TAG", "" + s.length);
       }
   });

  Observable.just("ss1", "ss2", "ss3").subscribe(s -> Log.e("TAG", s));

  Observable.just(stringList).subscribe(s -> Log.e("TAG", "" + s.size()));
05-19 15:40:31.740 8273-8273/com.example.rxjava.rxjavademo E/TAG: 3
05-19 15:40:31.740 8273-8273/com.example.rxjava.rxjavademo E/TAG: ss1
05-19 15:40:31.740 8273-8273/com.example.rxjava.rxjavademo E/TAG: ss2
05-19 15:40:31.740 8273-8273/com.example.rxjava.rxjavademo E/TAG: ss3
05-19 15:40:31.740 8273-8273/com.example.rxjava.rxjavademo E/TAG: 3

from系列
from系列可以将数组或Iterable的元素拿出来,做成多个事件进行发射

 String[] arr = new String[]{
  "ss1", "ss2", "ss3"};
 List<String> stringList = Arrays.asList(arr);

 Observable.fromArray(arr).subscribe(s -> Log.e("TAG", "array: " + s));

 Observable.fromIterable(stringList).subscribe(s -> Log.e("TAG", "list: " + s));

 // fromCallable接收一个函数,并将该函的返回值装入事件进行发射   
 Observable.fromCallable(() -> Arrays.asList(arr)).subscribe(s -> {
     Log.e("TAG", "" + s.size());
 });
05-19 15:47:47.870 8647-8647/com.example.rxjava.rxjavademo E/TAG: array: ss1
05-19 15:47:47.870 8647-8647/com.example.rxjava.rxjavademo E/TAG: array: ss2
05-19 15:47:47.870 8647-8647/com.example.rxjava.rxjavademo E/TAG: array: ss3
05-19 15:47:47.880 8647-8647/com.example.rxjava.rxjavademo E/TAG: list: ss1
05-19 15:47:47.880 8647-8647/com.example.rxjava.rxjavademo E/TAG: list: ss2
05-19 15:47:47.880 8647-8647/com.example.rxjava.rxjavademo E/TAG: list: ss3
05-19 15:47:47.880 8647-8647/com.example.rxjava.rxjavademo E/TAG: 3

查看源码可以知道Observable.just("ss1", "ss2", "ss3")... 底层调用的就是Observable.fromArray...

Interval

//每隔500ms 在io线程发射一次事件
 Observable.interval(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值