我的RxJava学习之旅 一

我学习的RxJava是从1.0版本开始的,目前流行的都是2.0,但网上好多的文章都是写2.0版本,对于我这个从未接触的人来说好多地方是看不懂的(某些操作符根本不知道意思),所以只要从最基本的一步一步来,哎 人笨就是这样的---RxJava的原理我就不献丑了--下面开始正文 我只讲操作符

Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>() {
            @Override
            public void call(Subscriber<? super String> subscriber) {
                subscriber.onNext("Hello Android");
                subscriber.onCompleted();

            }
        });  //注意:这里就是一个最普通的被观察者,可以发送三种不同类型的事件 onNext/onError/onCompleted 后面两个事件只能选择一种事件发送
// 观察者 最基本的 接受被观察者的三种事件
        Observer<String> observer = new Observer<String>() {
            @Override
            public void onCompleted() {
                Log.v(TAG,"...onCompleted...");
            }

            @Override
            public void onError(Throwable e) {
                Log.v(TAG,"...onError...");
            }

            @Override
            public void onNext(String o) {
                Log.v(TAG,"...onNext..." + o);
            }
        };
// 发生订阅关系
        single.subscribe(observer);

以上就是一个最基础的Rxjava运用,下面开始接受各种操作符变换符等:

Single  可替代被观察者Observable,但是只能发送两种事件 onError/onSuccess

// 被观察者
        Single<String> single = Single.create(new Single.OnSubscribe<String>() {
            @Override
            public void call(SingleSubscriber<? super String> singleSubscriber) {
                singleSubscriber.onSuccess("Hello world");
//                singleSubscriber.onError();
            }
        }); 如果发送onSuccess事件,那么观察者接受的事件为onNext---onCompleted

Subscriber 是Observer的子类 提供了解除订阅关系的方法 

// 观察者--变体 Subscriber是Observer的子类 提供了解除订阅的方法和判断是否解除订阅的方法
        final Subscriber<String> observer = new Subscriber<String>() {
            @Override
            public void onCompleted() {
                Log.v(TAG,"...onCompleted...");
            }

            @Override
            public void onError(Throwable e) {
                Log.v(TAG,"...onError..." + e.getLocalizedMessage());
            }

            @Override
            public void onNext(String o) {
                Log.v(TAG,"...onNext..." + o);
            }
        };
        observer.unsubscribe();// 解除订阅
        observer.isUnsubscribed();//判断是否解除订阅

Action 我们之前说的Observer等都会接受被观察者的三个事件,如果你只想接受其中的一个或者两个关系呢? 那么就会用到action了

// 只关心onNext(), 那么被观察者发出的Error事件会发送给整个系统 因为没有处理
        Action1<String> action1 = new Action1<String>() { // 请注意这个泛型
            @Override
            public void call(String s) {
                Log.v(TAG, "...call..." + s);
            }
        };
// 关心error事件
        Action1<Throwable> action2 = new Action1<Throwable>() { // 同样是action1 这个泛型类型是Throwable 所以它关心的是onError事件
            @Override
            public void call(Throwable throwable) {
                Log.v(TAG,"...call..." + throwable.getLocalizedMessage());
            }
        };
// 关心onComplted
        Action0 action0 = new Action0(){
            @Override
            public void call() {
                Log.v(TAG,"...onCompleted...");
            }
        };
// 发生订阅关系  只订阅error事件是不可以的
        observable.subscribe(action1,action2,action0); // 注意这里面action的顺序 onnext的是第一个

现在如果被观察者发出onNext事件,那么第一个Action1就会打印,如果发出onError事件,那么第二个Action1就会打印,如果发出onCompleted事件,那么第三个Action0就会打印了

Action总结: 所谓的action就是内部只有一个方法且没有返回值的类,Action1对应有一个参数...Action9对应有9个参数,还有一个特殊的ActionN 一般不用

Func Func和action的用法其实差不多 具体看代码

Func0<String> func0 = new Func0<String>() {
            @Override
            public String call() {
                return null;
            }
        };
Func1<String,Double> func1 = new Func1<String, Double>() {
            @Override
            public Double call(String s) {
                return null;
            }
        };
Func是内部只有一个方法 有返回值的类,返回值类型为最后一个参数的类型

第一次写这个 第一篇就先写到这里了,等我后续的.............





    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

plx_csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值