RxJava学习1--创建

测试 版本:

compile 'io.reactivex.rxjava2:rxjava:2.1.7'

1.通过create创建:

  
        Observable observable = Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(@NonNull ObservableEmitter<String> e) throws Exception {
                Logger.log("subscribe","");
                e.onNext("testTag");
                e.onError(new NullPointerException());
                e.onNext("testTag1");
                e.onComplete();
            }
        });

        Observer observer = new Observer<String>() {
            @Override
            public void onSubscribe(@NonNull Disposable d) {
                Logger.log("onSubscribe","");
                //Disposable用来取消订阅
            }

            @Override
            public void onNext(@NonNull String o) {
                Logger.log("onNext",""+o);
            }

            @Override
            public void onError(@NonNull Throwable e) {
                Logger.log("onError","");
            }

            @Override
            public void onComplete() {
                Logger.log("onComplete","");
            }
        };

        observable.subscribe(observer);
       //也可以使用Consumer,但是因为没有onError回调,所以可能会抛出异常
       observable.subscribe(new Consumer<ApiOutBean>() {
                @Override
                public void accept(ApiOutBean apiOutBean) {
                    Logger.log("accept", "s:" + apiOutBean.toString());
                }
            });

打印结果:

onSubscribe:
subscribe:
onNext:testTag
onError: //onError回调后就停止了

2.通过just创建多个

 Observer observer = new Observer<String>() {
            @Override
            public void onSubscribe(@NonNull Disposable d) {
                Logger.log("onSubscribe","");
            }

            @Override
            public void onNext(@NonNull String o) {
                Logger.log("onNext",""+o);
            }

            @Override
            public void onError(@NonNull Throwable e) {
                Logger.log("onError","");
            }

            @Override
            public void onComplete() {
                Logger.log("onComplete","");
            }
        };

        Observable observable = Observable.just("testTag1","testTag2","testTag3","testTag4");
        observable.subscribe(observer);//这里的传入类型可以是任意,但需要保证observer接受到的类型没错,不一致的时候需要进行类型转换


打印结果:

onSubscribe:
onNext:testTag1
onNext:testTag2
onNext:testTag3
onNext:testTag4
onComplete:

3.通过fromArray创建多个

  Observable observable = Observable.fromArray("testTag1","testTag2","testTag3","testTag4");
        observable.subscribe(observer);

或者:

 Observable observable = Observable.fromArray(new String[]{"testTag1","testTag2","testTag3","testTag4"});//这里的传入类型可以是任意,但需要保证observer接受到的类型没错,不一致的时候需要进行类型转换
        observable.subscribe(observer);

4.通过generate创建

  Observable observable = Observable.generate(new Consumer<Emitter<String>>() {
            @Override
            public void accept(Emitter<String> emitter) throws Exception {      //通过重载调用emitter发送
                emitter.onNext("testTag");
                emitter.onComplete();//注意一定要调用这个方法,不然会一直回调重载
            }
        });
        observable.subscribe(observer);

如果有初始化数据的话,可以这样做:

  Observable observable = Observable.generate(new Callable<Integer>() {
            @Override
            public Integer call() throws Exception {
                return 2;//初始化数据,是Integer的2
            }
        }, new BiConsumer<Integer, Emitter<String>>() {
            @Override
            public void accept(Integer integer, Emitter<String> emitter) throws Exception {
                //emitter发射出去的是String类型
                emitter.onNext(integer.toString());
                emitter.onComplete();

            }
        });
        observable.subscribe(observer);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值