版权声明:转载请在开头注明博客原地址,谢谢! https://blog.csdn.net/qq_35928566/article/details/82949238
首先看一段代码,所有的一切都从这段代码说起。
//创建被观察者
Observable.create(new ObservableOnSubscribe<String>() {
@Override
//默认在主线程里执行该方法
public void subscribe(@NonNull ObservableEmitter<String> e) throws Exception {
e.onNext("X");
e.onComplete();
}
})
//将被观察者切换到子线程
.subscribeOn(Schedulers.io())
//将观察者切换到主线程
.observeOn(AndroidSchedulers.mainThread())
//创建观察者并订阅
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String s) {
Log.e("onNext", s);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
1、我们用Observable对象的create方法创建了一个被观察者。然后我们new了一个 ObservableOnSubscribe对象作为参数,它是一个任务表,当 Observable被订阅的时候,ObservableOnSubscribe的subscribe()方法会自动被调用,事件序列就会依照设定依次触发,被观察者调用了观察者的方法,实现了观察者模式。
2、subscribeOn()这个方法决定被观察者运行的线程
3、observeOn()这个方法决定观察者的运行线程
注:以上2、3两条的用处在哪呢?Andriod中网络请求必须在子线程中执行,所以就可以将网络请求被观察者放在子线程中,然后观察者放在主线程中,就可以实现请求数据然后操作UI实现交互。
4、最后就是订阅了,新建一个观察者作为参数,这里面的每个方法调用由subscribe()方法调用,从而实现逻辑业务。
这就是简单的RxJava编程。