RxJava从入门到放弃1.0--rxjava的简单使用

在使用一个库前,首先得知道它是什么,那么,首先,RxJava是什么?
答案是:一个基于观察者模式的异步响应式库。
首先来看一段基本的使用代码

 Observable<String>    observable=Observable.just("hello","world");
 Subscriber<String> subscriber=new Subscriber<String>() {
            @Override
            public void onCompleted() {

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onNext(String s) {
                 Toast.makeText(getApplicationContext(),s,Toast.LENGTH_SHORT).show();
            }
        };
        observable.subscribe(subscriber);

代码的作用很简单,就是在屏幕上顺序显示出两个Toast,一个hello,一个word。
咦,等等,类似的代码我好像在哪见过

  View.OnClickListener onClickListener=new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                 Toast.makeText(getApplicationContext(),"hello ,world",Toast.LENGTH_SHORT).show();
            }
        }
        mButton.setOnClickListener(onClickListener);

对,没错,就是它了,相似度99%,button的点击事件也是基于观察者模式的,这也就是rxjava的第一个特点,观察者模式,只不过与Button不同的是,button是面向用户的,用户与界面交互的时候触发,而rxjava是面向数据的,数据流入的时候触发。
rxjava的流程就是这样的
Observable -> Operator 1 -> Operator 2 -> Operator 3 -> Subscriber

也就是说,observable是事件的生产者,subscriber是事件最终的消费者。
那么接下来解释下rxjava的各个类。
首先Observable,被观察者,事件的生产者,初始化函数与just,from,create等等,在这里传入起始数据,经过一系列的处理,最终流向subscriber。
前面说了,数据经过一系列的处理,然后交给subscriber,那么怎么处理呢,再来看一段改进的代码

Observable<String> observable=Observable.just("hello","a","world");
   observable.filter(new Func1<String, Boolean>() {
            @Override
            public Boolean call(String s) {
                return s.length()>3;
            }
        }).subscribe(subscriber);

这里Toast的输出依然是”hello”,“world”,怎么没有“a”?,这就是filter的作用,它把长度小于3的字符串给过滤掉了,当然这只是Operator 众多数据操作中的一个,它可以对你的数据进行特定的处理,然后继续向下传递,其他的以后再说。
最后是订阅者,也是数据的处理者,subscriber,其中又有几个基本方法
onStart()在订阅时调用,可以进行一些初始化操作,比如显示一个progressbar
onCompleted()订阅完成时调用,可以在这里隐藏progressbar
onNext()数据处理函数,你可以在这里对获得的数据进行处理,比如显示到listview上等等
onError()捕获异常时的操作,每一个 Obervable的执行最后一定会调用onCompleted()和onError()方法中的一个,所以不需要在Operator 中进行数据处理。
可以看到,rxjava对数据的处理就类似于实际生活中的流水线过程,一个初始数据,经过一系列的处理,最后交给了订阅者来处理。这样的函数式编程,能让代码更好的解耦,同时也能让结构更加清晰,利于开发和维护。当然,rxjava的优点还不止这些,它最大的特点就是异步,鉴于这只是1.0,那我们就先只是了解下它是什么和怎么用吧,详情请看下回分解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值