美文网首页Android知识程序员
RxJava 最简单的入门

RxJava 最简单的入门

作者: 铭宝宝真帅 | 来源:发表于2016-11-07 15:07 被阅读435次

    目录

    1. RxJava的概述
      1. 什么是RxJava
      2. Why 要使用 RxJava
      3. 必须要了解的观察者
      4. RxJava的基本元素
    2. RxJava的简单使用
    3. 详解常用操作符
    4. 关于异步

    一,RxJava的概述

    1.0 什么是RxJava

    1. 要知道RxJava是什么,那么你应该先去了解一下Rx。Rx的全称是Reactive Extensions,直译过来就是响应式扩展。Rx基于观察者模式,他是一种编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步数据流。
    2. 那么到底什么是RxJava呢?我对它的定义是:RxJava本质上是一个异步操作库,是一个能让你用极其简洁的逻辑去处理繁琐复杂任务的异步事件库。

    1.1 RxJava的好处

    1. 规范项目成员的代码实现
    2. 让复杂的逻辑变得有条理性

    1.2 必须要了解的观察者模式

    TODO This
    在这个事件中,台灯作为观察者,开关作为被观察者,台灯透过电线来观察开关的状态来并做出相应的处理

    观察者.png

    1.3 RxJava的基本元素

    1. Observable:被观察者,事件源
    2. Subscriber/Observer:观察者
    3. OnSubscribe:一个接口类,是连接被观察者和观察者的桥梁,另外要说明的是onSubscribe是Observable的一个局部变量

    二,RxJava的简单使用

    2.1 使用步骤

    1. 导包: 在build.gradle中导入如下:

       compile 'io.reactivex:rxandroid:1.2.0'
       compile 'io.reactivex:rxjava:1.1.5'
      
    2. 创建 被观察者(Observerable<>)对象

    3. 创建 观察者 (Subscriber或者Observer)对象

    4. 通过订阅:把观察者和被观察者进行相互关联

    2.2 最简单的实例演示

    TODO This

    三,RxJava的操作符详解


    3.1 创建操作:创建Observable(被观察者)的操作符

    1. create : 使用OnSubscribe从头创建一个Observable,这种方法比较简单。需要注意的是,使用该方法创建时,建议在OnSubscribe#call方法中检查订阅状态,以便及时停止发射数据或者运算。

    2. from :将一个Iterable, 一个Future, 或者一个数组,内部通过代理的方式转换成一个Observable。代码如下:
      String[] array = {"hello", "rxJava"};
      Observable<String> observable = Observable.from(array);

    3. just:将一个或多个对象转换成发射这个或这些对象的一个Observable。如果是单个对象,内部创建的是ScalarSynchronousObservable对象。如果是多个对象,则是调用了from方法创建。

       Observable<String> observable1 = Observable.just("hello", "rxjava");
      
    4. empty: 创建一个什么都不做直接通知完成的Observable

    5. error: 创建一个什么都不做直接通知错误的Observable

    6. never: 创建一个什么都不做的Observable

    3.2变换操作符:

    1. map : 所谓变换,就是将事件序列中的对象或整个序列进行加工处理,转换成不同的事件或事件序列。

       //举个栗子
       //比如被观察者产生的事件中只有图片文件路径;但是在观察者这里只想要bitmap,那么就需要**类型变换**。
        Observable.create(new Observable.just(getFilePath()) //使用map操作来完成类型转换
        .map(new Func1<String, Bitmap>() {
                  @Override public Bitmap call(String s) { //显然自定义的createBitmapFromPath(s)方法,是一个极其耗时的操作 
                           return createBitmapFromPath(s); } }) 
       .subscribe( //创建观察者,作为事件传递的终点处理事件  
                 new Subscriber<Bitmap>() { 
                         @Override
                         public void onCompleted() {                                                    
                               Log.d("DDDDDD","结束观察...\n"); 
                          }
                         @Override 
                         public void onError(Throwable e) { 
                                 //出现错误会调用这个方法 
                         } 
                       @Override 
                       public void onNext(Bitmap s) { 
                                 //处理事件 showBitmap(s)
                       }
              );
      

    未完待续。。。

    四,关于异步(线程调度)Scheduler

    4.1 线程环境
    RxJava的线程.png
      Observable.just(1, 2, 3, 4) // IO 线程,由 subscribeOn() 指定 
            .subscribeOn(Schedulers.io()) 
            .observeOn(Schedulers.newThread())
            .map(mapOperator) // 新线程,由 observeOn() 指定 
            .observeOn(Schedulers.io()) .map(mapOperator2) // IO 线程,由 observeOn() 指定 
            .observeOn(AndroidSchedulers.mainThread) 
            .subscribe(subscriber); // Android 主线程,由 observeOn() 指定
    
    • 这里注意的是: 有两个重要的api
      • subscribeOn( )
      • observeOn( )
    • 需要注意的是(对于初学者,先了解到此就足够使用了):
    • subscribeOn()它指示Observable在一个指定的调度器上创建(只作用于被观察者创建阶段)。只能指定一次,如果指定多次则以第一次为准
    • observeOn()指定在事件传递(加工变换)和最终被处理(观察者)的发生在哪一个调度器。可指定多次,每次指定完都在下一步生效。

    相关文章

      网友评论

        本文标题:RxJava 最简单的入门

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