RxJava的基本使用

作者: 朽木starrysky | 来源:发表于2016-12-28 02:53 被阅读0次
RxJava响应式函数编程也在Android开发中流行起来了,最大的好处的话就是,在程序逻辑异常复杂的情况下,仍然可以让代码的逻辑保持简洁.

现在就简单的介绍一下它的使用首先添加Rx相关的依赖
compile 'io.reactivex:rxjava:1.2.4'
compile 'io.reactivex:rxandroid:1.2.1'

Button监听事件.png RxJava.png

RxJava里面的被观察者Observable ,观察者Observer之间的关系,就像Button点击监听类似,Button通过setOnClickListener将Button与OnClickListener联系起来了.一旦Button被点击,OnClickListener就会执行onClick()方法,
同样的RxJava里面的Observable 通过subscribe 与Observer建立联系,一旦Observable 有触发一下操作,就会对应的执行onNext(),onCompleted();或者onNext(), onError():
* onNext():普通事件
* onCompleted():事件队列完结
* onError(): 事件队列异常
借用之前有个大神和我说的一个案例,现有一个数组 String[] arr ={"abcd", "bcde", "cdef"}, 把其中以字母"a"开头的字符串找出来并加上"from Alpha",最后打印出新的字符串的长度

普通方法我们做法是这样的,

 for (int i = 0; i < arr.length; i++) {
          String temp = arr[i];
          if (temp.startsWith("a")) {
              temp += " from Alpha";
              System.out.println("traditional:" + temp + temp.length());
          }

用RxJava写的话就是这样,而且这里Observer实际执行的方法的话就是onNext(),onCompleted();

 Observable.from(arr)
     //过滤
     .filter(new Func1<String, Boolean>() {
         @Override
         public Boolean call(String s) {
             return s.startsWith("a");
         }
         //订阅关联
     })
     .subscribe(new Observer<String>() {
         @Override
         public void onCompleted() {
         }
         @Override
         public void onError(Throwable e) {
         }
         @Override
         public void onNext(String s) {
             //参数列表中的s就是数组arr中过滤出来满足条件的字符串了
             String temp = s += " from Alpha";
             System.out.println("RxJava:" + temp + temp.length());
         }
     });

为了方便理解,我就举个例子(呵呵,就不用买栗子了,虽然有点强行,应该比直接看代码好理解),
Observable(被观察者)就像小偷,Observer(观察者)就像警察
首先小偷的关注的是美女的背包,在意的是背包里面的钱包,然后从背包挑出(filter)钱包,最后被警察观察到了(subscribe),然后(onNext)警察做出回应,逮捕小偷,得到小偷偷走的钱包
所以最后代码表示的话就是这样

 小偷.from(美女背包)
//通过过滤器判断
     .filter(new Func1<物品, 是否是钱包>() {
         @Override
         public Boolean call(物品 s) {
             return 通过对物品观察触摸,判断是否为钱包;
         }
         //订阅关联
     })
     .subscribe(new 警察<物品>() {
         @Override
         public void onCompleted() {
         }
         @Override
         public void onError(Throwable e) {
         }
         @Override
         public void onNext(物品s) {
             //参数列表中的s就是美女背包中挑选出来的钱包了
        最后将得到的钱吧交回美女失主,然后和警察一起回警察局做笔录
       ,然后美女爱上了警察...然后就没有然后了.....(自己YY去吧);
         }
     });
  • 需要注意的是这里onNext()方法可能会执行多次如果数组arr里面有多个满足条件的字符串就会执行多次当然没有满足条件的就不会执行,但是onCompleted():事件队列完结方法只会执行一次

  • 相信有了上面的例子已经对RxJava有个大概印象了,
    现在总结下步骤吧:
    1.创建Observable(被观察者)
    Observable.just(T...) 参数为单个的
    Observable.from(T[]) / Observable.from(Iterable<? extends T>) 参数为数组或Iterable
    由于是数组所以用的是from().
    2.filter(过滤器)
    3.Observer(观察者)
    4.subscribe(订阅,建立联系)

如果只想关心onNext方法可以直接用Action1,这样代码会简洁很多

observable.subscribe(observer);
  Observable.from(arr)
      .filter(new Func1<String, Boolean>() {
          @Override
          public Boolean call(String s) {
              return s.startsWith("a");
          }
      })
      .subscribe(new Action1<String>() {
          @Override
          public void call(String s) {
              String temp = s += " from Alpha";
              System.out.println("RxJava:" + temp + temp.length());
          }
      });

当然这只是一点基本使用.
练习Demo下载:https://github.com/starrysky0/RxjavaDemo

相关文章

  • Android框架——RxJava(一)概述与基本使用

    RxJava(一)概述与基本使用 RxJava学习系列: RxJava(一)概述与基本使用 [RxJava(二)创...

  • JAVA之RxJava

    RxJava概述 RxJava的基本使用 RxJava有三个基本的元素: 被观察者(Observable) 观察者...

  • Android Rxjava Retrofit 入门教程

    首先会Rxjava和Retrofit基本使用Rxjava入门使用:http://www.jianshu.com/p...

  • 【Android】RxJava的使用(三)转换——map、fla

    前两篇Android RxJava的使用(一)基本用法、Android RxJava的使用(二)Action介绍了...

  • RxJava 基本使用

    对RxJava 的学习,做一个记录,为以后的面试复习用. 我看一些RxJava 的介绍,个人感觉RxJava 这个...

  • RxJava——基本使用

    一、 RxJava简介 (一) 什么是RxJava “a library for composing asynch...

  • RxJava基本使用

    1、RxJava可以做什么 RxJava是一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的...

  • Rxjava基本使用

    RxJava 是一个 基于事件流、实现异步操作的库 本文是基于Rxjava2.0, 2.0和1.0差异可以参考:h...

  • RxJava基本使用

    1、RxJava概述 RxJava 是一个基于事件流、实现异步操作的库Rxjava原理基于一种扩展的观察者模式,有...

  • RxJava的基本使用

    引言 该篇文章主要是关于RxJava的基本使用的代码讲解。 1.两种使用方式 RxJava的两种使用方式分别为: ...

网友评论

    本文标题:RxJava的基本使用

    本文链接:https://www.haomeiwen.com/subject/wdoevttx.html