RxJava入门教程(1)

前言:
最近一直在学习,学的东西很多,很杂,一会看自定义View,一会看各种流行框架,虽然受益良多,但是学的太多,也没好好消化,所以就写几遍博客,巩固一下知识,也给大家分享点学习经验

RxJava是什么?

两个字:异步

RxJava怎么用?

用之前还是要了解清楚RxJava的一些基本概念
RxJava是观察模式的一个扩展,所以下面几个概念和观察者模式很相似

  • Observable

    被观察者,也就是事件源

  • Observer、Subscriber

    观察者,订阅者
    
  • subscribe()

Observer或者Subscriber通过subscribe()订阅Observable的事件,当有事件发生的时候,Observable就会通知Observer或者Subscriber


说了这么多,大家是不是有点晕,接下来就给大家来个简单的栗子,专治头晕
* 引入依赖

compile 'io.reactivex:rxjava:1.1.0'
compile 'io.reactivex:rxandroid:1.1.0'

首先先创建一个Observable,要有事件源才能订阅事件是吧

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

好了,有了事件源,我们再来创建一个订阅者:Subscriber
SubscriberObserver的实现类,不过它是一个抽象类哦。所以我们用Subscriber就行

Subscriber<String> subscriber=new Subscriber<String>() {
            @Override
            public void onCompleted() {
                Log.i(TAG, "onCompleted: ");
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onNext(String s) {
                Log.i(TAG, "onNext: "+s);
            }
        };

事件源和订阅者都有了,然后我们就可以建立订阅关系了

observable.subscribe(subscriber);

分析代码

Observable.create(new Observable.OnSubscribe<String>() {
            @Override
            public void call(Subscriber<? super String> subscriber) {
                subscriber.onNext("hello");
                subscriber.onNext("RxJava");
                subscriber.onCompleted();
            }
        });

是不是看到一个熟悉的对象呢?没错,就是Subscriber,我们的订阅者。

所以结合代码来看,就是当ObservableOnSubscribe的时候,也就是发生订阅关系的时候,会依次调用

Subscriber的onNext("hello")onNext("RxJava")onCompleted()方法

大家可以猜下运行的结果是什么
我们运行一下,结果是

I/Main: onNext: hello
I/Main: onNext: RxJava
I/Main: onCompleted: 

不知道大家有没有猜对呢,好了,大家先练习一遍。

  • 其他创建方式

    Observable除了直接create()外,还有两种方式可以创建

Observable.just("Hello","RxJava");
String [] strs={"Hello","RxJava"};
 Observable.from(strs);

上面的两种方式创建的Observable和下面创建的Observable是等价的,对比一下代码,相信大家也能理解。记住,Observable.just(T t ...);参数是可变的哦

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

接下来再说下Subscriber的其他创建方式

Action1<String> onNext = new Action1<String>() {
            @Override
            public void call(String s) {
            //onNext的时候调用
            }
        };
    Action1<Throwable> onError = new Action1<Throwable>() {
            @Override
            public void call(Throwable throwable) {
            //onError的时候调用
            }
        };
    Action0 onCompleted = new Action0() {
            @Override
            public void call() {
            //onCompleted的时候调用
            }
        };
    observable.subscribe(onNext,onError,onCompleted);

上面的三个Action,等价于一个Subscriber,也是Subscriber的一种简写方式。比如我们的Subscriber只要onNext()方法的时候,我们可以这样做

observable.subscribe(onNext);

这时候,onNext对象就是一个简化的Subscriber,同理,其他两个相信大家也能举一反三

大家先练习练习,我们下节见。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值