RxJava-create、observeOn 、subscribeOn、subscribe操作符

之前的博客给小伙伴们简单介绍了RxJava响应式编程的概念。我这边对RxJava的学习是通过相应的操作符的,我这个专栏会主要介绍个人在开发中常用的RxJava操作符。这篇博客重点介绍的是create操作符。

注意:小编使用的是RxJava3,部分API会与网上的RxJava2教程不一样。

create操作符

create的字面意思就是创建。所以create操作符是用来创建一个Observable的,我们直接上示例代码:

Observable.create(new ObservableOnSubscribe() {
                        @Override
                        public void subscribe(@NonNull ObservableEmitter emitter) throws Throwable {
                            // 发射数据
                            emitter.onNext("创建一个Observable成功啦!!!");
                        }
                    })
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribeOn(Schedulers.io())
                    .subscribe(new Consumer() {
                        @Override
                        public void accept(String s) throws Throwable {
                            createBinding.mTvCreateResult.setText(s);
                        }
                    }, new Consumer() {
                        @Override
                        public void accept(Throwable throwable) throws Throwable {
                            createBinding.mTvCreateResult.setText("创建一个Observable失败......");
                        }
                    });

这是截取我一个开源项目的RxJava的片段,有兴趣的小伙伴可以去clone下来,有学习新的操作符,我会直接把示例代码上传。我的RxJava开源项目地址跳转:
RxJava开源项目地址 https://gitee.com/yubo168/rx-java

示例代码解析

create操作符实现的是ObservableOnSubscribe接口,我们来看看它主要做什么事情呢?

public interface ObservableOnSubscribe<@NonNull T> {

    /**
     * Called for each {@link Observer} that subscribes.
     * @param emitter the safe emitter instance, never {@code null}
     * @throws Throwable on error
     */
    void subscribe(@NonNull ObservableEmitter emitter) throws Throwable;
}

实现这个接口之后,我们可以获取到一个ObservableEmitter,这是一个数据发射器。我们之前的文章有说到响应式编程也称作流式编程,ObservableEmitter继承于Emitter,我们可以让相应的数据向下流去,我们可以通过Emitter决定数据留下哪里。

subscribeOn设置Observablesubscribe方法所在的线程,生产数据。
observeOn 设置subscribeaccept方法所在的线程,消耗数据。

这是我了解到的RxJava的create、observeOn 、subscribeOn操作符,希望对刚开始学RxJava的小伙伴有帮助。有什么问题可以在评论去和我讨论!小伙伴们也可以关注我的公众号:
RxJava-create、observeOn 、subscribeOn、subscribe操作符_第1张图片

你可能感兴趣的:(RxJava,RxJava,create,observeOn,subscribeOn,subscribe)