Rxjava操作符之创建操作符

Rxjava创建类操作符

基本创建

  • 操作符:create()

  • 描述:创建一个最基本Observable对象

  • 示例:

Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
                emitter.onNext("第一条");
                emitter.onNext("第二条");
                emitter.onNext("第三条");
                emitter.onComplete();
            }
        }).subscribe(new Observer<String>() {
            @Override
            public void onSubscribe(Disposable d) {
                Log.i(TAG, "onSubscribe");
            }

            @Override
            public void onNext(String value) {
                Log.i(TAG, "onNext接收value:" + value);
            }

            @Override
            public void onError(Throwable e) {
                Log.i(TAG, "onError");
            }

            @Override
            public void onComplete() {
                Log.i(TAG, "onComplete");
            }
        });
  • 打印log:

快速创建

1,just()
  • 描述:快速创建Observable并发送事件。最多只能发送10个参数,它有10个重载方法

  • 示例:

        Observable.just(1, 2, 3).subscribe(new Observer<Integer>() {
            @Override
            public void onSubscribe(Disposable d) {
                Log.i(TAG, "onSubscribe");
            }

            @Override
            public void onNext(Integer value) {
                Log.i(TAG, "onNext接收value:" + value);
            }

            @Override
            public void onError(Throwable e) {
                Log.i(TAG, "onError");
            }

            @Override
            public void onComplete() {
                Log.i(TAG, "onComplete");
            }
        });
  • 打印:

2,fromArray()
  • 描述:根据传入的数组快速创建并发送事件。

  • 示例:

        String[] arrs = {"一条", "两条", "三条"};
        Observable.fromArray(arrs)
                .subscribe(new Observer<String>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        Log.i(TAG, "onSubscribe");
                    }

                    @Override
                    public void onNext(String value) {
                        Log.i(TAG, "onNext接收value:" + value);
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.i(TAG, "onError");
                    }

                    @Override
                    public void onComplete() {
                        Log.i(TAG, "onComplete");
                    }
                });
  • 打印:

3,fromIterable()
  • 描述:根据传入的List快速创建并发送事件

  • 示例:

        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);

        Observable.fromIterable(list)
                .subscribe(new Observer<Integer>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        Log.i(TAG, "onSubscribe");
                    }

                    @Override
                    public void onNext(Integer value) {
                        Log.i(TAG, "onNext接收value:" + value);
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.i(TAG, "onError");
                    }

                    @Override
                    public void onComplete() {
                        Log.i(TAG, "onComplete");
                    }
                });
  • 打印:

4,empty()
  • 描述:创建后仅发送onComplete事件

  • 示例:

        Observable.empty().subscribe(new Observer<Object>() {
            @Override
            public void onSubscribe(Disposable d) {
                Log.i(TAG, "onSubscribe");
            }

            @Override
            public void onNext(Object o) {
                Log.i(TAG, "onNext");
            }

            @Override
            public void onError(Throwable e) {
                Log.i(TAG, "onError");
            }

            @Override
            public void onComplete() {
                Log.i(TAG, "onComplete");
            }
        });
  • 打印:

5,error()
  • 描述:创建后发送错误事件Error

  • 示例:

        Observable.error(new RuntimeException())
                .subscribe(new Observer<Object>() {
            @Override
            public void onSubscribe(Disposable d) {
                Log.i(TAG, "onSubscribe");
            }

            @Override
            public void onNext(Object o) {
                Log.i(TAG, "onNext");
            }

            @Override
            public void onError(Throwable e) {
                Log.i(TAG, "onError");
            }

            @Override
            public void onComplete() {
                Log.i(TAG, "onComplete");
            }
        });
  • 打印:

6,never()
  • 描述:创建后什么都不做

  • 示例:

        Observable.never()
                .subscribe(new Observer<Object>() {
            @Override
            public void onSubscribe(Disposable d) {
                Log.i(TAG, "onSubscribe");
            }

            @Override
            public void onNext(Object o) {
                Log.i(TAG, "onNext");
            }

            @Override
            public void onError(Throwable e) {
                Log.i(TAG, "onError");
            }

            @Override
            public void onComplete() {
                Log.i(TAG, "onComplete");
            }
        });
  • 打印:

延时创建

1,defer()
  • 描述:当订阅时重新创建新的Observable

  • 重载:无

  • 示例:

        i = 20;
        Observable<Integer> observable = Observable.defer(new Callable<ObservableSource<? extends Integer>>() {
            @Override
            public ObservableSource<? extends Integer> call() throws Exception {
                return Observable.just(i);
            }
        });

        i = 30;
        observable.subscribe(new Observer<Integer>() {
            @Override
            public void onSubscribe(Disposable d) {
                Log.i(TAG,"onSubscribe");
            }

            @Override
            public void onNext(Integer value) {
                Log.i(TAG,"onNext,value:"+value);
            }

            @Override
            public void onError(Throwable e) {
                Log.i(TAG,"onError");
            }

            @Override
            public void onComplete() {
                Log.i(TAG,"onComplete");
            }
        });
  • 打印:

2,timer()
  • 描述:创建一个在给定的延时之后发射数据项为0的Observable

  • 重载:timer(long,TimeUnit)timer(long,TimeUnit,Scheduler)

  • 示例:

        Observable.timer(3000, TimeUnit.MILLISECONDS)
                .subscribe(new Observer<Long>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        Log.i(TAG, "onSubscribe");
                    }

                    @Override
                    public void onNext(Long value) {
                        Log.i(TAG, "onNext,value:" + value);
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.i(TAG, "onError");
                    }

                    @Override
                    public void onComplete() {
                        Log.i(TAG, "onComplete");
                    }
                });
  • 打印:

3,interval()
  • 描述:创建一个按照给定的时间间隔发射从0开始的整数序列的Observable

  • 重载:

    第一类:interval(long,TimeUnit)interval(long,TimeUnit,Scheduler)

    第二类:interval(long,long,TimeUnit)interval(long,long,TimeUnit,Scheduler),其中第一个参数为延迟多少时间后开始发送第一个事件,之后按照第二个参数的固定间隔时间发送

  • 示例:

        Observable.interval(1,TimeUnit.SECONDS)
                .subscribe(new Observer<Long>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        Log.i(TAG, "onSubscribe");
                    }

                    @Override
                    public void onNext(Long value) {
                        Log.i(TAG, "onNext,value:" + value);
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.i(TAG, "onError");
                    }

                    @Override
                    public void onComplete() {
                        Log.i(TAG, "onComplete");
                    }
                });
  • 打印:

4,intervalRange()
  • 描述:创建一个按照给定的起始值、发送总数、延时时间和时间间隔来发射整数序列的Observable

  • 重载:intervalRange(long, long, long, long, TimeUnit)intervalRange(long, long, long, long, TimeUnit, Scheduler)

  • 示例:

        /**
         * 参数1:第几个数字开始
         * 参数2:一共发送几个数字
         * 参数3:延时多久后开始发送第一个
         * 参数4:发送第一个后,每间隔多久发送后续事件
         * 参数5:时间单位
         */
        Observable.intervalRange(3,5,2,1,TimeUnit.SECONDS)
                .subscribe(new Observer<Long>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        Log.i(TAG, "onSubscribe");
                    }

                    @Override
                    public void onNext(Long value) {
                        Log.i(TAG, "onNext,value:" + value);
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.i(TAG, "onError");
                    }

                    @Override
                    public void onComplete() {
                        Log.i(TAG, "onComplete");
                    }
                });
  • 打印:

5,range()
  • 描述:创建一个发射特定整数序列的Observable

  • 重载:range(int,int)range(int,int,scheduler)

  • 示例:

        //参数1:从第几个数字开始。参数2:一共发送几个
        Observable.range(3,4)
                .subscribe(new Observer<Integer>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        Log.i(TAG, "onSubscribe");
                    }

                    @Override
                    public void onNext(Integer value) {
                        Log.i(TAG, "onNext,value:" + value);
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.i(TAG, "onError");
                    }

                    @Override
                    public void onComplete() {
                        Log.i(TAG, "onComplete");
                    }
                });
  • 打印:

6,rangeLong()
  • 描述:创建一个发射特Long类型整数序列的Observable,功能使用与range()相同。

  • 重载:无,只有一个rangeLong(long,long)

  • 示例:与range()相同

猜你喜欢

转载自blog.csdn.net/wernerzeiss/article/details/80998734