美文网首页
RxJava学习笔记简单实用(1)

RxJava学习笔记简单实用(1)

作者: 西红柿的眼泪 | 来源:发表于2018-03-05 21:46 被阅读0次
RxJava 在 GitHub 的介绍:

RxJava is a Java VM implementation of Reactive Extensions: a library for composing asynchronous and event-based programs by using observable sequences.
RxJava是响应扩展的Java VM实现:通过使用可观察的序列来组合异步和基于事件的程序的库。
总结:RxJava 是一个 基于事件流、实现异步操作的库

RxJava 作用特点

使用简单现异步操作,类似于 Android中的 AsyncTask 、Handler作用。
由于 RxJava的使用方式是:基于事件流的链式调用,所以使得 RxJava:逻辑简洁、实现优雅、使用简单,更重要的是,随着程序逻辑的复杂性提高,它依然能够保持简洁 & 优雅。

Rxjava 原理

基于 一种扩展的观察者模式,扩展观察者模式中有4个角色,被观察者(Observable)产生事件、观察者(Observer)接收事件,并给出响应动作、订阅(Subscribe)连接 被观察者 & 观察者、事件(Event)被观察者 & 观察者 沟通的载体。
RxJava 原理可总结为:被观察者 (Observable) 通过 订阅(Subscribe) 按顺序发送事件 给观察者 (Observer), 观察者(Observer) 按顺序接收事件 & 作出对应的响应动作。

基本使用

分步骤实现:该方法主要为了深入说明Rxjava的原理 & 使用,主要用于演示说明

 public void SimpleRxJava(View view){
        Observable observable=Observable.create(new ObservableOnSubscribe() {
            @Override
            public void subscribe(ObservableEmitter emitter) throws Exception {
                emitter.onNext(1);
                emitter.onNext(2);
                emitter.onNext(3);
                emitter.onComplete();
            }
        });
        Observer observer=new Observer() {
            @Override
            public void onSubscribe(Disposable d) {

            }
            @Override
            public void onNext(Object o) {
                Log.e("sss","接受到"+o+"事件");
            }
            @Override
            public void onError(Throwable e) {
            }
            @Override
            public void onComplete() {
                Log.e("sss","接受事件完成");
            }
        };

        observable.subscribe(observer);
    }

基于事件流的链式调用:主要用于实际使用

  public void SimpleChainRxJava(View view){
        Observable.just("1","2","3").subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {
                Log.e("sss", "接受到" + s + "事件");
            }
        }, new Consumer<Throwable>() {
            @Override
            public void accept(Throwable throwable) throws Exception {
                Log.e("sss", "接受事件异常");
            }
        });
    }
额外说明

观察者 Observer的subscribe()具备多个重载的方法

   public final Disposable subscribe() {}
    // 表示观察者不对被观察者发送的事件作出任何响应(但被观察者还是可以继续发送事件)

    public final Disposable subscribe(Consumer<? super T> onNext) {}
    // 表示观察者只对被观察者发送的Next事件作出响应
    public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError) {} 
    // 表示观察者只对被观察者发送的Next事件 & Error事件作出响应

    public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError, Action onComplete) {}
    // 表示观察者只对被观察者发送的Next事件、Error事件 & Complete事件作出响应

    public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError, Action onComplete, Consumer<? super Disposable> onSubscribe) {}
    // 表示观察者只对被观察者发送的Next事件、Error事件 、Complete事件 & onSubscribe事件作出响应

    public final void subscribe(Observer<? super T> observer) {}
    // 表示观察者对被观察者发送的任何事件都作出响应

可采用 Disposable.dispose() 切断观察者 与 被观察者 之间的连接
即观察者 无法继续 接收 被观察者的事件,但被观察者还是可以继续发送事件。

相关文章

  • RxJava学习笔记简单实用(1)

    RxJava 在 GitHub 的介绍: RxJava is a Java VM implementation o...

  • rxjava目录

    RxJava学习笔记: 1、RxJava->onCreate()与subscribe()2、RxJava->doO...

  • RxJava的学习笔记(三)线程调度

    前言 RxJava的学习笔记(一)基础概念RxJava的学习笔记(二)操作符RxJava的学习笔记(三)线程调度上...

  • RxJava的学习笔记(一)基础概念

    前言 RxJava的学习笔记(一)基础概念RxJava的学习笔记(二)操作符RxJava的学习笔记(三)线程调度去...

  • RxJava的学习笔记(二)操作符

    前言 RxJava的学习笔记(一)基础概念RxJava的学习笔记(二)操作符RxJava的学习笔记(三)线程调度上...

  • RxJava 学习笔记

    我的CSDN学习笔记 Rxjava学习笔记

  • RxJava2之变换操作符篇

    在上一篇文章中,我们介绍了RxJava2的基本简单实用,在本篇文章中,我们将继续学习RxJava2中的常用操作符 ...

  • RxJava学习笔记(1)

    观察者模式:当一个对象发生变化时,依赖它的所有对象都会被通知并且会自动更新 RxJava是典型的观察者模式 生产者...

  • RXJava学习笔记(1)

    说明 RXJava最近火的不行,各种衍生品已经越来越多的充斥我们的眼球。简单来说,RXJava就是被观察者(Obs...

  • RxJava学习笔记

    RxJava学习笔记 家族成员 类/对象 Observable简单理解被观察者深入理解博主暂时停留在简单理解上… ...

网友评论

      本文标题:RxJava学习笔记简单实用(1)

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