之前的博客给小伙伴们简单介绍了RxJava响应式编程的概念。我这边对RxJava的学习是通过相应的操作符的,我这个专栏会主要介绍个人在开发中常用的RxJava操作符。这篇博客重点介绍的是create
操作符。
注意:小编使用的是RxJava3,部分API会与网上的RxJava2教程不一样。
create操作符
create
的字面意思就是创建
。所以create操作符是用来创建一个Observable的,我们直接上示例代码:
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(@NonNull ObservableEmitter<String> emitter) throws Throwable {
// 发射数据
emitter.onNext("创建一个Observable成功啦!!!");
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Throwable {
createBinding.mTvCreateResult.setText(s);
}
}, new Consumer<Throwable>() {
@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<T> emitter) throws Throwable;
}
实现这个接口之后,我们可以获取到一个ObservableEmitter
,这是一个数据发射器。我们之前的文章有说到响应式编程也称作流式编程,ObservableEmitter
继承于Emitter
,我们可以让相应的数据向下流去,我们可以通过Emitter
决定数据留下哪里。
subscribeOn
设置Observable
的subscribe
方法所在的线程,生产数据。
observeOn
设置subscribe
的accept
方法所在的线程,消耗数据。
这是我了解到的RxJava的create、observeOn 、subscribeOn操作符,希望对刚开始学RxJava的小伙伴有帮助。有什么问题可以在评论去和我讨论!小伙伴们也可以关注我的公众号: