Observable 有很多种方式创建
1. Observable.create(new ObservableOnSubscribe<Object>()[]) 2. Observable.just(.....) 3. Observable.fromArray(T...items) 4. Observable.fromCallable(new Callable<Objecet>() {}) 5. ..其他自己摸索下他们的区别。别急 为了更好的理解我们先动手完成一次事件发送,成就感会带起你学习兴趣
Observer observer = new Observer<String>() { @Override public void onSubscribe(Disposable d) { Log.d(TAG, "onSubscribe" + d.toString()); } @Override public void onNext(String value) { Log.d(TAG, "onNext" + value); } @Override public void onError(Throwable e) { Log.d(TAG, "onError" + e.toString()); } @Override public void onComplete() { Log.d(TAG, "onComplete"); } }; Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() { @Override public void subscribe(ObservableEmitter<String> e) throws Exception { e.onNext("A"); e.onNext("B"); e.onComplete(); //e.onError(Throwable); } // 这里的 onNext 可以理解为察者模式中的 notifyObservers() 而 onComplete()就是完成了发送 截断 发送,如果没有调用此方法 则可继续使用 onNext。onError 就是异常,也会截断后续发送,特别注意 onComplete 和 onError 互斥 不能同时使用。 //订阅 subscribe 等同于 addObserver observable.subscribe(observer); 收到日志 D/MainActivity: onSubscribe: null D/MainActivity: onNext: A D/MainActivity: onNext: B D/MainActivity: onComplete如果要关注 onComplete 就需要这样了,我们拿参数最长的解析下,那么其他就自然懂了
subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError, Action onComplete, Consumer<? super Disposable> onSubscribe) 参数 Consumer<? super T> 就是 onNext 接收器 参数 Consumer<? super Throwable> onError接收器 ... 巴拉巴拉。。。其他都不用说啊 看参数的名字都懂了 写法就如下这样: getObservable().subscribe(new Consumer<String>() { @Override public void accept(String s) throws Exception { //onNext } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { //onError } }, new Action() { @Override public void run() throws Exception { //onComplete } }, new Consumer<Disposable>() { @Override public void accept(Disposable disposable) throws Exception { //onSubscribe } });另外推荐Rxjava2学习博客: 给初学者的RxJava2.0教程
