RxAndroid - 基础概念+基础实践讲解(一)
看了一些网上rxjava教程,做了一些实践实例,自己从新手开始掌握rxjava,感谢前辈们的贡献。这里是我的学习记录,同时也想以最简洁最清晰最快速的方式为后来者引路。rxjava,响应式编程 - https://github.com/ReactiveX/RxJava 官方文档如 a = b * c ,b值变化了,a值自动变化,a监听订阅b的变化。b即为被观察者observabl
看了一些网上rxjava教程,做了一些实践实例,自己从新手开始掌握rxjava,感谢前辈们的贡献。这里是我的学习记录,同时也想以最简洁最清晰最快速的方式为后来者引路。
rxjava,响应式编程 - https://github.com/ReactiveX/RxJava 官方文档
如 a = b * c ,b值变化了,a值自动变化,a监听订阅b的变化。
b即为被观察者observable,a为观察者observer,订阅动作为subscribe,observable.subscribe(observer)。
observable可理解为一条数据事件发送通道,如:发送 1、2、3
observer可理解为一条数据事件接收通道,如上面发送1、2、3,这里就会收到1、2、3
----------------------------------------------------------------------------------
在项目中添加gradle配置,即可边学边开发测试:
compile 'io.reactivex.rxjava2:rxjava:2.0.1' compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
下面结合实例讲解
public static void sample(){
Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
emitter.onNext(1);
emitter.onNext(2);
emitter.onNext(3);
emitter.onComplete();
}
});
Observer<Integer> observer = new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG,"observer onSubscribe");
}
@Override
public void onNext(Integer value) {
Log.d(TAG,"observer onNext : " + value);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
Log.d(TAG,"observer onComplete");
}
};
observable.subscribe(observer);
}
执行结果为:
observer onSubscribe
observer onNext : 1
observer onNext : 2
observer onNext : 3
observer onComplete
步骤:
- 创建observable,执行Observable.create()
- 创建observer,执行new Observer()
- 拿到observable中的ObservableEmitter(发射器),发射数据执行onNext(T value)
- observer便会拿到ObservableEmitter发射的数据
注:
subscribe之后emitter才执行onNext(T value)
observable执行onComplete()或onError()后,可以继续发射数据;observer执行onComplete()或onError()后,不再接收数据
----------------------------------------------------------------------------------
需掌握知识点:
create(new ObservableOnSubscribe) 创建一个observable
subscribe(observer) 订阅
ObservableEmitter 类 数据发射器,其包含如下四个方法
onSubscribe(Disposable d) 订阅成功回调,返回Disposable对象
onNext(T value) 提供一个T类型item数据给observer
onComplete() observerable发送items结束后通知observer
onError(Throwable e) 当observerable发送数据出错误时
Disposable类 mDisposable.dispose();用于取消订阅
subscribe()有多个重载的方法:
public final Disposable subscribe() {}
public final Disposable subscribe(Consumer<? super T> onNext) {}public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError) {}
public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError, Action onComplete) {}
public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError, Action onComplete, Consumer<? super Disposable> onSubscribe) {}
public final void subscribe(Observer<? super T> observer) {}
----------------------------------------------------------------------------------
demo - https://github.com/FreeLeo/rxandroid-demo
参考:
https://github.com/ReactiveX/RxJava 官方文档
https://www.jianshu.com/p/031745744bfa 基础用法实例
https://www.jianshu.com/p/0cd258eecf60 系统教程2.x
http://blog.csdn.net/johnny901114/article/details/51532776 系统教程1.x
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1012/3572.html 详解rxjava
更多推荐
所有评论(0)