本来买了本Android进阶之路,里面有写到RxJava的内容,准备跟着学习来着,结果里面的内容有点老了,rxjava都2.x.y了。所以只能到网上找找资料了。
推荐一个简书地址,感觉还不错,给初学者的RxJava2.0教程
大致说一下第一次看到RxJava的想法,大概就是就是订阅和被订阅,和EventBus有点像。最终是实现异步回调。
还是先来个HelloWorld吧,方便我自己记忆和理解。
如何使用RxJava,个人觉得先理解一下单次的意思比较好。
|
可观察 |
|
观察者 |
知道这两个单次的意思后,就可以使用RxJava了。刚刚推荐的那个简书地址,里面有图文解释,可以先去了解一下。
首先创建一个可以观察的对象,create()中传入了一个新的对象,字面意思为,当可被观察的对象订阅观察者的时候执行。
/**
* 1.Observable 可以被观察的事物
*/
Observable observable = Observable.create(new ObservableOnSubscribe() {
@Override
public void subscribe(ObservableEmitter emitter) throws Exception {
emitter.onNext(1);
emitter.onNext(2);
emitter.onNext(3);
emitter.onComplete();
}
});
然后创建一个观察者,
/**
* 2.观察者
*/
Observer mObserver = new Observer() {
@Override
public void onSubscribe(Disposable d) {
Log.i(TAG, "onSubscribe: 在订阅的时候");
}
@Override
public void onNext(Integer integer) {
Log.i(TAG, "onNext: "+integer.toString());
}
@Override
public void onError(Throwable e) {
Log.e(TAG, "onError: ",e.getCause());
}
@Override
public void onComplete() {
Log.i(TAG, "onComplete: ");
}
};
然后两者可以建立连接,完成异步回调。
//观察者和被观察者之间建立联系,由被观察者决定谁去谁去观察自己
observable.subscribe(mObserver);
运行的结果:
05-02 08:41:00.342 2802-2802/com.magic.rxjava I/MainActivity: onSubscribe: 在订阅的时候
05-02 08:41:00.342 2802-2802/com.magic.rxjava I/MainActivity: onNext: 1
05-02 08:41:00.342 2802-2802/com.magic.rxjava I/MainActivity: onNext: 2
05-02 08:41:00.342 2802-2802/com.magic.rxjava I/MainActivity: onNext: 3
05-02 08:41:00.342 2802-2802/com.magic.rxjava I/MainActivity: onComplete:
最后建立连接的时候,需要注意的是 可被观察的对象主动去找一个观察者,即订阅。
...
我感觉这篇博客应该只有我自己看得懂了...各位老铁们还是去看看我贴的那个连接,写的比较好。
20190513补充:
今天又往后学习了一点,感觉这个可被观察和观察者需要一个角色定位更容易让人理解。
可以理解为可观察的人是指挥官,观察者是执行士兵。由可以观察的事物发送命令,由观察者执行。