美文网首页
RxJava异步+链式编程

RxJava异步+链式编程

作者: 琳媚儿 | 来源:发表于2019-11-19 15:04 被阅读0次

例1:

Button——>被观察者 OnClickListener——>观察者 setOnClickListener()——>订阅 onClick()——>事件

观察者模式

原理:

A和B两个,A是被观察者,B是观察者,B对A进行观察,B并不是需要时刻盯着A,而是A如果发生了变化,会主动通知B,B会对应做一些变化。举个例子,假设A是连载小说,B是读者,读者订阅了连载小说,当小说出现了新的连载的时候,会推送给读者。读者不用时刻盯着小说连载,而小说有了新的连载会主动推送给读者。这就是观察者模式。而RxJava正是基于观察者模式开发的

image
导入资源包:
<uses-permission android:name="android.permission.INTERNET" />
     implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '3.10.0'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
    implementation group: 'io.reactivex.rxjava2', name: 'rxjava', version: '2.1.7'

第一步被观察者

        Observable novel=Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
                emitter.onNext("连载1");
                emitter.onNext("连载2");
                emitter.onNext("连载3");
                emitter.onComplete();
            }
        });

推送连载1、连载2和连载3,在subscribe中的ObservableEmitter<String>对象的Emitter是发射器的意思,ObservableEmitter有三种发射的方法,分别是void onNext(T value)、void onError(Throwable error)、void onComplete(),onNext方法可以无限调用,Observer(观察者)所有的都能接收到,onError和onComplete是互斥的,Observer(观察者)只能接收到一个,OnComplete可以重复调用,但是Observer(观察者)只会接收一次,而onError不可以重复调用,第二次调用就会报异常

第二步创建观察者

//观察者
        Observer<String> reader=new Observer<String>() {
            @Override
            public void onSubscribe(Disposable d) {
                mDisposable=d;
                Log.e(TAG,"onSubscribe");
            }

            @Override
            public void onNext(String value) {
                if ("2".equals(value)){
                    mDisposable.dispose();
                    return;
                }
                Log.e(TAG,"onNext:"+value);
            }

            @Override
            public void onError(Throwable e) {
                Log.e(TAG,"onError="+e.getMessage());
            }

            @Override
            public void onComplete() {
                Log.e(TAG,"onComplete()");
            }
        };

通过new创建接口,并实现其内部的方法,看方法其实就应该差不多知道干嘛的,onNext、onError、onComplete都是跟被观察者发射的方法一一对应的,这里就相当于接收了。onSubscribe(Disposable d)里面的Disposable对象要说一下,Disposable英文意思是可随意使用的,这里就相当于读者和连载小说的订阅关系,如果读者不想再订阅该小说了,可以调用 mDisposable.dispose()取消订阅,此时连载小说更新的时候就不会再推送给读者了

第三步:读者和连载小说建立订阅关系

novel.subscribe(reader);
image

相关文章

  • RxJava异步+链式编程

    例1: Button——>被观察者 OnClickListener——>观察者 setOnClickList...

  • RxJava

    RxJava概述 RxJava 是一种响应式编程,来创建基于事件的异步操作库。基于事件流的链式调用、逻辑清晰简洁。...

  • RxJava2系列第一篇---基本使用

    目录 第一篇---基本使用第二篇---异步第一篇---操作符 什么是RxJava 异步编程框架,链式编程风格git...

  • android-RxJava探索之旅

    一 RxJava波及到的概念 响应式编程 函数式编程 观察者模式 责任链模型 事件驱动 异步操作 链式调用 Rea...

  • RxJava2.0——从放弃到入门

    前言 终于到了讲RxJava这一期,RxJava是笔者个人非常喜欢的一个开源库,它很好的将链式编程风格和异步结合在...

  • RxJava2.0

    前言 终于到了讲RxJava这一期,RxJava是笔者个人非常喜欢的一个开源库,它很好的将链式编程风格和异步结合在...

  • Java语言进阶篇:RxJava2.0

    前言 终于到了讲RxJava这一期,RxJava是我个人非常喜欢的一个开源库,它很好的将链式编程风格和异步结合在一...

  • 2020-03-10 笔记 RxJava 原理及使用

    Rxjava是一个异步框架,功能和handler类似,特点是链式调用,逻辑简单,也是一种基于观察者模式的响应式编程...

  • 记:学习RxJava的小笔记

    知识点1.简单了解RxJava RxJava是基于事件流的链式调用,实现异步操作的库RxJava属于一种特殊的观察...

  • 进击Android架构师——RX响应式编程(RxLifecycl

    一、前言 RxJava简洁的编码风格、易用易读的链式方法调用、强大的异步支持等使得RxJava被广泛使用,它通过线...

网友评论

      本文标题:RxJava异步+链式编程

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